微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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;

我想要做的是:不要因为你可以使用三元条件表达式.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐