2017-02-17 77 views
-3

我想取消设置特定条件的值。如果我使用unset关键字它通过一个error.please任何人在这种情况下帮助我。如何在使用php的三元运算符中使用未设置

$reportHeader = array("name" => !empty($name) ? "Name" : "0", 
    "number" => !empty($number) ? "Number" : "0"); 

在这种情况下,我打印的姓名和号码存在如果不存在,我回到0.but我不需要打印0。如果条件不满足,我需要取消设置值。 我想是这样的:

$reportHeader = array("name" => !empty($name) ? "Name" : unset(), 
     "number" => !empty($number) ? "Number" : unset(); 

但它通过错误

+0

什么是你想取消设置?你还没有告诉PHP你想要删除的数组或索引。 – drmonkeyninja

+0

我想删除数组中的索引 –

回答

2

不能使用unset()这样,它需要一个变量要传递给它未设置(见PHP documentation而是填充您阵列,其中价值尚未确定,然后使用array_filter删除索引null值你不想。

$reportHeader = array(
    "name" => !empty($name) ? "Name" : null, 
    "number" => !empty($number) ? "Number" : null 
); 
// Now remove the 'unset' values 
$reportHeader = array_filter($reportHeader); 
+0

是的它正在工作,但有时$ name可能会返回“”(空值)它返回我们要打印他们。但array_filter删除“”也 –

+0

@RaghulRajendran你可能需要使用' isset()'而不是'!empty()'在这种情况下。 – drmonkeyninja

0

unset()需要一个或多个ARG uments。所以如果你启用了错误报告功能,并且检查了这个功能的文档,你会自己看到这个。那么问题是,你究竟想要解除什么?

你需要返回一些值作为你的数组的值,没有unset()成为值(像你目前正在尝试)。如果你只打算要添加的元素,如果该值不为空,你可以做

$reportHeader = array(); 
!empty($name) ? $reportHeader['name'] = "Name" : null; 
!empty($number) ? $reportHeader['number'] = "Number" : null; 

这增加值只在您的数组,如果他们是不是空的。

尽管标准if也很干净 - 仅仅因为可以写成三元运算符,并不意味着它应该。

if (!empty($name)) 
    $reportHeader['name'] = "Name"; 
0

您可以简单地使用如下因素代码

!empty($name) ? $reportHeader["name"] = "Name" : ""; 
!empty($number) ? $reportHeader["number"] = "Number" : "";