【发布时间】:2019-03-23 13:34:02
【问题描述】:
很长一段时间以来,我一直希望能够做到这一点而不会产生额外的麻烦:
$test = 'test';
echo !empty($test2) ? 'something before ' . $test2 : '';
这将返回一个空字符串,因为 $test2 未定义。
$test = 'test';
$test2 = 'test2';
echo !empty($test2) ? 'something before ' . $test2 : '';
当 $test2 被定义时,这将返回 "Something before test2"。
: ''; 是否更改为 : false; 或 : null; 无关紧要,因为在这里它们都会计算为空字符串。所以这真的是事情。怎么if/then不行,只能if/then/else?
使用 PHP7 的空值合并双问号 ?? 运算符,它开始看起来越来越接近能够做到这一点。但我不认为这个运算符真的能解决问题。
$test = 'test';
$test2 = 'test2';
echo $test2 ?? 'test3';
我们有“如果$test2 不是null,则立即返回。”所以我们无法在其中添加“Something before”。
三元运算符?: 也有类似的问题,这种情况是不可能的,因为它会立即返回一个真值。我不太介意!empty(),因为这是有必要的原因,但总是使用: ''; 对于一个常见的模式来说似乎有点笨拙......
【问题讨论】:
-
但是,真正的问题是什么?
-
@Furgas ,为了使用一个变量,它必须被设置..所以我们通常用
!empty()来检查......它可以解决很多常见的情况,以便能够测试该条件,如果满足,请使用变量(回显或分配)。因此,鉴于我们只需要先测试变量即可尝试使用它,通常我们不需要elsecase.. .而且似乎没有办法解决它:(虽然不错的链接!
标签: php conditional php-7 conditional-operator shorthand