尽管 $_GET['friendid'] = 55,但下面的代码似乎没有按照我的期望工作,它返回了 NULL。
<?PHP
$_GET['friendid'] = 55;
$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';
echo $friendid;
exit;
?>
尽管 $_GET['friendid'] = 55,但下面的代码似乎没有按照我的期望工作,它返回了 NULL。
<?PHP
$_GET['friendid'] = 55;
$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';
echo $friendid;
exit;
?>
自从PHP 7发布以来,您可以使用null合并运算符(双“?”)来实现此操作:
$var = $array["key"] ?? "default-value";
// which is synonymous to:
$var = isset($array["key"]) ? $array["key"] : "default-value";
$var = $value ?: "default-value";
// which is synonymous to:
$var = $value ? $value : "default-value";
去掉!
,你不想否定表达式。
$friendid = isset($_GET['friendid']) ? $_GET['friendid'] : 'empty';
目前你正在使用三元运算符:
$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';
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
变量的值设置为空。$friendid
的值将采用$_GET['friendid']
的值(如果之前已经设置)。isset()
将返回布尔值TRUE,如果变量存在。因此,如果您要执行$fid = $_GET['friendid'] = "";
$exists = isset($fid);
$exists
将会是 TRUE,因为 $_GET['friendid']
存在。如果这不是你想要的,我建议你查看 empty。Empty 会在空字符串("")上返回 TRUE,这似乎是你期望的结果。如果你使用 empty,请参考我链接的文档,其中还有其他情况,empty 会返回 true,而你可能没有预料到,这些情况在上面的链接中有明确的文档记录。
if($myArr['user'] ?? false){
等同于
if(isset($myArr['user']) && $myArr['user']){
好的,我可能遇到了与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$="",那么使用 if A$="" then.... 会更加清晰易懂(或者对于 PHP 来说,使用 if $A="")。
我有时候觉得将所有的字符串和变量都作为字符串使用非常令人望而生畏。尽管如此,我实际上可以理解为什么要这样做...只是让我有些难以理解。
如果friendid未设置,则friendid = friendid,否则friendid为空