在PHP中有类似于JavaScript的东西:
alert(test || 'Hello');
Run Code Online (Sandbox Code Playgroud)
因此,当测试未定义或为null时,我们将看到Hello,否则 - 我们将看到test的值.
我在PHP中尝试了类似的语法但它似乎没有正常工作......而且我也不知道如何谷歌这个问题..
谢谢
编辑
我应该补充一点,我想在数组中使用它:
$arr = array($one || 'one?', $two || 'two?'); //This is wrong
Run Code Online (Sandbox Code Playgroud)
但实际上,我可以使用内联'?:'如果声明在这里,谢谢.
$arr = array(is_null($one) ? "one?" : $one, is_null($two) ? "two ?" : $two); //OK
Run Code Online (Sandbox Code Playgroud)
Yam*_*iko 55
你可以做 echo $test ?: 'hello';
$test如果它是真的,则会回显'hello'.
注意如果$test没有设置它将抛出通知或严格错误但是...
这应该不是问题,因为大多数服务器都设置为忽略这些错误.大多数框架都有触发这些错误的代码.
Yam*_*iko 48
从PHP 7开始,您可以使用称为coalesce运算符的东西,它可以完全按照您的要求执行,而不会?:触发E_NOTICE .
要使用它,您??将使用它来检查左侧的值是否设置而不是null.
$arr = array($one ?? 'one?', $two ?? 'two?');
Run Code Online (Sandbox Code Playgroud)
Jef*_*sby 43
echo (!$test) ? 'hello' : $test;
Run Code Online (Sandbox Code Playgroud)
或者你可以更健壮,并做到这一点
echo isset($test) ? $test : 'hello';
Run Code Online (Sandbox Code Playgroud)
Kha*_*han 11
根据最新版本,使用它作为简写
$var = $value ?? "secondvalue";
Run Code Online (Sandbox Code Playgroud)
单行。超级可读,适用于常规变量、数组和对象。
// standard variable string
$result = @$var_str ?: "default";
// missing array element
$result = @$var_arr["missing"] ?: "default";
// missing object member
$result = @$var_obj->missing ?: "default";
Run Code Online (Sandbox Code Playgroud)
看看它的实际效果:Php Sandbox Demo
我很惊讶在其他答案中没有建议这样做:
echo isset($test) ? $test : 'hello';
Run Code Online (Sandbox Code Playgroud)
如果不存在或设置为null ,则从文档isset($var)返回false。$var
@Yamiko描述了PHP 7及以上版本的null合并运算符,它是上述语法的快捷方式。
在这种情况下:
echo $test ?? 'hello';
Run Code Online (Sandbox Code Playgroud)