如果为 null,请在 PHP 中的一行中使用其他变量

php
2022-08-30 08:02:06

在PHP中是否有类似于JavaScript的东西:

alert(test || 'Hello');

因此,当 test 未定义或为 null 时,我们将看到 Hello,否则 - 我们将看到 test 的值。

我在PHP中尝试了类似的语法,但它似乎不能正常工作...我也不知道如何谷歌这个问题。

谢谢

编辑

我可能应该补充一点,我想在数组中使用它:

$arr = array($one || 'one?', $two || 'two?'); //This is wrong

但事实上,我可以使用内联'?:'如果这里也有声明,谢谢。

$arr = array(is_null($one) ? "one?" : $one, is_null($two) ? "two ?" : $two); //OK

答案 1

从 PHP 7 开始,你可以使用一种叫做 colyesce 运算符的东西,它完全可以做你想要的,而不会触发E_NOTICE。?:

要使用它,您可以使用它将检查左侧的值是否已设置而不是null。??

$arr = array($one ?? 'one?', $two ?? 'two?'); 

答案 2

你可以做echo $test ?: 'hello';

如果这是真的,否则会回响。$test'hello'

请注意,如果未设置,它将引发通知或严格错误,但...$test

这应该不是问题,因为大多数服务器都设置为忽略这些错误。大多数框架都有触发这些错误的代码。


编辑:这是一个经典的三元算子,但中间部分被省略了。从 PHP 5.3 开始可用。

echo $test ? $test : 'hello'; // this is the same
echo $test ?: 'hello';        // as this one

这只检查第一个变量的真实性,而不是它是否未定义,在这种情况下,它会触发错误。对于后者,请查看下面的PHP7答案(希望很快在上面)。E_NOTICE


推荐