很长一段时间以来,我一直希望能够做到这一点,而不需要额外的轻微划分:
$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
,只有if/then/else
?
使用PHP7的空合并双问号??
运算符,它开始似乎越来越接近能够做到这一点。但我不认为这个操作员实际上是这样做的。
$test = 'test';
$test2 = 'test2';
echo $test2 ?? 'test3';
我们有“如果$test2
不是null
,那么就马上回来吧。”所以我们无法添加“Something before
”。
三元运算符?:
有一个类似的类似问题,这种情况是不可能的,因为它立即返回一个真值。我不太介意!empty()
,因为它有必要为什么它是必要的,但总是加强: '';
似乎有点苛刻的共同模式......
是的,可以使用&&
运算符。
$test = 'test';
$test2 = 'test2';
!empty($test2) && ($test2 = 'something before ' . $test2);
该行的后半部分仅在前半部分解析为真时执行。
编辑
应该注意的是,这可能是不好的做法,因为它可能会使它更难阅读,但它的工作原理。
编辑2
我的不好,这只有在下半部分可以作为布尔值解析时才有效,因此不适用于回声,但适用于赋值。