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']先前设置的值.