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;

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

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...