为什么unset()在PHP三元运算符中不起作用

时间:2012-05-07 01:14:22

标签: php ternary-operator unset

因此存在问题,但我对此视而不见。 即使在阅读了两次文档(PHP Comparison Operators

之后
isset($items['blog']) ? unset($items['blog']) : NULL;
  

解析错误:语法错误,意外T_UNSET

4 个答案:

答案 0 :(得分:5)

您不能在三元操作中使用unset,因为它不是可以操作的表达式。它是一种语言结构(如issetecho),不能放在那里。

只要使用它就可以了,不需要做出任何决定:

unset($items['blog']);

答案 1 :(得分:1)

@Bryan指出,没有函数调用三元运算符中的语言结构。由于这里根本没有涉及返回值,只需:

unset($items['blog']);

无需事先检查是否设置了值。如果不是,unset根本不会做任何事情。

答案 2 :(得分:1)

错误说明T_UNSETunset的{​​{3}})在该行意外发生。这意味着你不能把它放在那里。就这样。删除它,你很好:

unset($items['blog']);

这与三元运算符btw。没有太大关系,正如代码示例所示,无论如何都不需要unset的运算符。

如果你非常喜欢三元运算符,你可以评估未设置的:

isset($items['blog']) ? eval('unset($items[\'blog\'])') : NULL;

但这不是一个严肃的建议,因为不是很直截了当。

答案 3 :(得分:0)

只是关于基准问题的建议:只需要在视图中使用三元语法,或者如果你真的需要一个行代码;因此if else运算符要快得多