PHP7空合并或if / then速记-评估而不是返回

时间:2018-10-18 17:04:32

标签: php conditional php-7 conditional-operator shorthand

很长一段时间以来,我一直希望能够做到这一点而又不会产生额外的麻烦:

BlockingQueue

这将返回一个空字符串,因为未定义$test = 'test'; echo !empty($test2) ? 'something before ' . $test2 : '';

$test2

在定义了$test = 'test'; $test2 = 'test2'; echo !empty($test2) ? 'something before ' . $test2 : ''; 时返回"Something before test2"

$test2更改为: '';: false;并不重要,因为在这里它们都将计算为空字符串。这就是事实。为什么: null;只能if/then做,怎么可能呢?

使用PHP7的null合并双问号if/then/else运算符,似乎开始越来越接近实现它的能力。但是我认为这个运算符实际上并不能解决问题。

??

我们有“如果$test = 'test'; $test2 = 'test2'; echo $test2 ?? 'test3'; 不是$test2,则立即将其返回。”因此,我们无法在其中添加“ null”。

三元运算符Something before有一个类似的类似问题,在这种情况下是不可能的,因为它会立即返回真实值。我不太介意?:,因为它有必要这么做是很有意义的,但是对于常见的模式,始终坚持使用!empty()似乎有点cru琐...

1 个答案:

答案 0 :(得分:0)

是的,可以使用&&运算符。

$test = 'test';
$test2 = 'test2';

!empty($test2) && ($test2 = 'something before ' . $test2);

该行的后一半仅在前一半解析为true时执行。

编辑

应该指出的是,这可能是不好的做法,因为它可能会使阅读起来有些困难,但它可以工作。

编辑2

我不好,这只有在后半部分可以解析为布尔值的情况下才有效,因此不适用于回显,但适用于分配。