很长一段时间以来,我一直希望能够做到这一点而又不会产生额外的麻烦:
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琐...
答案 0 :(得分:0)
是的,可以使用&&
运算符。
$test = 'test';
$test2 = 'test2';
!empty($test2) && ($test2 = 'something before ' . $test2);
该行的后一半仅在前一半解析为true时执行。
编辑
应该指出的是,这可能是不好的做法,因为它可能会使阅读起来有些困难,但它可以工作。
编辑2
我不好,这只有在后半部分可以解析为布尔值的情况下才有效,因此不适用于回显,但适用于分配。