【发布时间】:2012-01-24 02:30:03
【问题描述】:
我对 PHP 的三元运算符有疑问,从 PHP 5.3 版开始,您可以用更短的版本替换速记三元运算符
// Older version
$route = isset($test) ? $test : 'test is NOT set';
// Newer version as of 5.3
$route = isset($test) ?: 'test is NOT set';
如果没有设置$test,现在在较新的版本上。它工作正常。但是,当由于 isset() 方法设置它时,它返回 true 或 1 而不是值。
我是否必须使用较旧的较长方法才能使$route 等于$test 的值而不是1 的布尔值?
【问题讨论】:
-
你可以改用
$route = $test ?: 'test is NOT set';。 -
如果您不介意隐藏错误消息,您仍然可以使用速记。这不是“正确”或“漂亮”的方法,但仍然有效 - $route = @$test ?: 'test is NOT set';
标签: php