PHP中的三元运算符和变量重新赋值
作者:互联网
我已经仔细研究了三元运算符与if / else结构的问题,虽然我知道在正常情况下使用if / else结构的三元运算符没有性能损失/收益,但我没有看到任何提及情况. PHP特有的语言(但欢迎任何与语言无关的详细信息),解释器会在以下情况下重新分配值:
$foo = 'bar'
$foo = strlen($foo) > 3 ? substr($foo, 0, 3) : $foo;
因为这将评估为$foo = $foo;这是效率低下,还是翻译只是忽略/放弃这个评估?
在旁注,那么:
!defined('SECURE') ? exit : null;
解决方法:
我不知道你的第一个例子是否效率低下,但肯定没有意义.我仍然认为if语句更清晰:
$foo = 'bar';
if (strlen($foo) > 3)
$foo = substr($foo, 0, 3);
虽然以下工作,但在最后放置null是没有意义的,因为三元运算符意味着用于计算表达式/值,但这里null除了防止解析错误之外什么都不做:
!defined('SECURE') ? exit : null;
更常见的是,你会看到这个,布尔短路的一个例子(如果定义了SECURE,则退出不执行,因为一旦发现至少一个条件为真,则条件表达式自动计算为真):
defined('SECURE') or exit;
我想要做的是:不要因为你可以使用三元条件表达式.
标签:php,ternary-operator 来源: https://codeday.me/bug/20191002/1841986.html