Jas*_*vis 26 php ternary-operator
以下这个似乎没有用,我怎么想,虽然$ _GET ['friendid'] = 55它返回NULL
<?PHP
$_GET['friendid'] = 55;
$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';
echo $friendid;
exit;
?>
Run Code Online (Sandbox Code Playgroud)
Gre*_*reg 59
从PHP 7发布版本开始,您可以使用null-coalescing运算符(双"?"):
$var = $array["key"] ?? "default-value";
// which is synonymous to:
$var = isset($array["key"]) ? $array["key"] : "default-value";
Run Code Online (Sandbox Code Playgroud)
在PHP 5.3+中,如果您要检查的是" truthy "值,则可以使用"Elvis运算符"(请注意,这不会检查isset).
$var = $value ?: "default-value";
// which is synonymous to:
$var = $value ? $value : "default-value";
Run Code Online (Sandbox Code Playgroud)
Phi*_*ber 47
删除!
.你不想否定表达.
$friendid = isset($_GET['friendid']) ? $_GET['friendid'] : 'empty';
Run Code Online (Sandbox Code Playgroud)
Dim*_*nov 11
如果你是懒惰和冒险,你可以使用错误控制运算符@和三元运算符的简短形式.
$friendid = @$_GET['friendid']?: 'empty';
Run Code Online (Sandbox Code Playgroud)
目前您正在与三元运营商合作:
$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';
Run Code Online (Sandbox Code Playgroud)
将其分解为一个if-else
语句,它看起来像这样:
if(!isset($_GET['friendid']))
$friendid = $_GET['friendid'];
else
$friendid = 'empty';
Run Code Online (Sandbox Code Playgroud)
看看if
声明中发生了什么:
!isset($_GET['friendid'])
Run Code Online (Sandbox Code Playgroud)
请注意isset
功能前面的感叹号(!).这是另一种说法,"与之相反".你在这里做的是检查是否已经设置了值$_GET['friendid']
.如果是这样,$friendid
应该承担这个价值.
但实际上,它会因为$_GET['friendid']
甚至不存在而破裂.你不能把那些不存在的东西的价值拿走.
从头开始,您已设置了一个值$_GET['friendid']
,因此第一个if
条件现在为false并将其传递给else
选项.
在这种情况下,请将$friendid
变量的值设置为empty
.
你想要的是删除感叹号,然后值$friendid
将采取$_GET['friendid']
先前设置的值.