下面的内容似乎没有用到我的预期,但事件虽然$ _GET ['friendid'] = 55它返回NULL
<?PHP
$_GET['friendid'] = 55;
$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';
echo $friendid;
exit;
?>
答案 0 :(得分:57)
从PHP 7's release开始,你可以使用null-coalescing运算符(双“?”):
$var = $array["key"] ?? "default-value";
// which is synonymous to:
$var = isset($array["key"]) ? $array["key"] : "default-value";
在PHP 5.3+中,如果您要检查的是“truthy”值,则可以使用“Elvis运算符”(请注意,这不会检查isset)。
$var = $value ?: "default-value";
// which is synonymous to:
$var = $value ? $value : "default-value";
答案 1 :(得分:46)
删除!
。你不想否定这个表达。
$friendid = isset($_GET['friendid']) ? $_GET['friendid'] : 'empty';
答案 2 :(得分:11)
如果您懒惰且有风险,可以使用error control operator @和ternary operator的缩写形式。
$friendid = @$_GET['friendid']?: 'empty';
答案 3 :(得分:5)
目前,您正在与三元运营商合作:
$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';
将其分解为if-else
语句,它看起来像这样:
if(!isset($_GET['friendid']))
$friendid = $_GET['friendid'];
else
$friendid = 'empty';
查看if
声明中发生的事情:
!isset($_GET['friendid'])
请注意isset
功能前面的感叹号(!)。这是另一种说法,“与之相反”。你在这里做的是检查$_GET['friendid']
中是否已经设置了值。如果是这样,$friendid
应该承担该值。
但实际上,由于$_GET['friendid']
甚至不存在,它会破裂。你不能把那些不存在的东西的价值拿走。
从头开始,您已为$_GET['friendid']
设置了一个值,因此第一个if
条件现在为false,并将其传递给else
选项。
在这种情况下,请将$friendid
变量的值设置为empty
。
你想要的是删除感叹号,然后$friendid
的值将采用$_GET['friendid']
的值(如果之前已经设置过的话)。
答案 4 :(得分:2)
此问题的最佳解决方案,即如果您还需要“检查空字符串”,则为empty()。
$friendid = empty($_GET['friendid']) ? 'empty' : $_GET['friendid'];
empty()不仅检查变量是否已设置,而且如果输入任何可被视为“空”的内容,则返回false,例如空字符串,空数组,整数0,布尔值false, ......
答案 5 :(得分:1)
从您对Philippe的回复中我想您需要了解empty和isset之间的差异。
总而言之,如果变量存在,isset()
将返回布尔值TRUE。因此,如果你要做
$fid = $_GET['friendid'] = "";
$exists = isset($fid);
当$exists
存在时, $_GET['friendid']
将为TRUE。如果这不是你想要的,我建议你调查一下。 Empty将在空字符串(“”)上返回TRUE,这似乎是您所期望的。如果您确实使用空,请参考我链接到的文档,还有其他情况,空的将返回true,您可能没有预期,这些情况在上面的链接中明确记录。
答案 6 :(得分:0)
如果friendid 不设置,则friendid = friendid,否则friendid =空
答案 7 :(得分:0)
好吧,我可能一直有类似的问题不熟悉! jasondavis的情况。
有点混乱,却发现没有!如... isset($ avar)与!isset($ avar)相比可以产生相当大的差异。
所以随着!在适当的位置,更像是
中的YES since $_GET['friendid'] = 55; has been initialized...
tell me 'no' - the opposite - that it hasn't and set it to empty.
$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';
where not having the ! tells me yes it has something in it, leave it be.
$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';
如果A $ =&#34;&#34;然后....工作吧。 (或如果$ A =&#34;&#34;对于那些PHP)。
我发现使用字符串和变量作为字符串有时非常令人生畏。即使是混乱,我也能理解为什么......只是让我有点难以理解。
答案 8 :(得分:0)
我在if条件下使用Null coalescing operator运算符
if($myArr['user'] ?? false){
相当于
if(isset($myArr['user']) && $myArr['user']){