我想取消某些条件的值。如果我通过错误使用unset关键字,请在这种情况下帮助我。
$reportHeader = array("name" => !empty($name) ? "Name" : "0",
"number" => !empty($number) ? "Number" : "0");
在这种情况下我打印名称和数字存在,如果不存在我返回0.但我不需要打印0.如果条件失败我需要取消设置值。 我试过这样:
$reportHeader = array("name" => !empty($name) ? "Name" : unset(),
"number" => !empty($number) ? "Number" : unset();
但它是通过错误
答案 0 :(得分:2)
您不能像这样使用unset()
,它希望将一个变量传递给它以取消设置(请参阅PHP documentation。而是使用null
值填充数组,其值为尚未设置,然后使用array_filter
删除您不想要的索引。
$reportHeader = array(
"name" => !empty($name) ? "Name" : null,
"number" => !empty($number) ? "Number" : null
);
// Now remove the 'unset' values
$reportHeader = array_filter($reportHeader);
答案 1 :(得分:0)
unset()
需要一个或多个参数。因此,如果您启用了错误报告,并检查了此功能的文档,您将自己看到。那么问题是,你究竟想要取消什么?
您需要返回一些内容作为数组的值,而不是unset()
成为值(就像您当前正在尝试的那样)。如果您只打算在值不为空时添加元素,则可以执行
$reportHeader = array();
!empty($name) ? $reportHeader['name'] = "Name" : null;
!empty($number) ? $reportHeader['number'] = "Number" : null;
如果数组不为空,则只为数组添加值。
虽然标准if
也非常干净 - 只是因为可以写成三元运算符,并不意味着它应该。
if (!empty($name))
$reportHeader['name'] = "Name";
答案 2 :(得分:0)
您只需使用以下代码
即可!empty($name) ? $reportHeader["name"] = "Name" : "";
!empty($number) ? $reportHeader["number"] = "Number" : "";