Php !$变量=$variable-inside-if
我一直在学习PHP套接字服务器和客户端的基础知识 然后我偶然发现了这些行(摘自上面链接的第一个示例,发生在Php !$变量=$variable-inside-if,php,if-statement,Php,If Statement,我一直在学习PHP套接字服务器和客户端的基础知识 然后我偶然发现了这些行(摘自上面链接的第一个示例,发生在中,而): 我可以阅读部分,并关闭连接,以防有错误的阅读 但是下一个如果让我发疯了。 首先,我对如何给布尔赋值感到困惑。 其次,我很难完全理解整个表达 有人能解释一下if内部发生了什么,以及它如何应用于服务器上下文吗 如果这个问题问得不恰当,请原谅。我对那里发生的事情太困惑了,不知道具体要问什么。有了这句话,就没有布尔赋值了。我们正在比较false的类型和false的值(true-false
中,而):
我可以阅读部分,并关闭连接,以防有错误的阅读
但是下一个如果让我发疯了。
首先,我对如何给布尔赋值感到困惑。
其次,我很难完全理解整个表达
有人能解释一下if内部发生了什么,以及它如何应用于服务器上下文吗
如果这个问题问得不恰当,请原谅。我对那里发生的事情太困惑了,不知道具体要问什么。有了这句话,就没有布尔赋值了。我们正在比较false
的类型和false
的值(true-false,而不仅仅是0)。你可以读一下
然后
这和
$buf = trim($buf);
if ($buf == false) {
continue;
}
因此,为了解释原文:
// The assignment happens first and then we're checking the boolean value
if (!$buf = trim($buf))
表达式是可拆分的
$buf=trim($foo)
$check=$buf
if($check){something();}
首先获取变量,然后检查它的计算结果是否为false(可能是false
,可能是null
可能是0
),最后根据该信息进行切换。下面是对代码的解释
false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))
首先,调用socket\u read
,结果存储在$buf
中。然后将$buf
与false
进行比较,以查看它是否为bool
,其值是否为false
。(==
表示同时具有相同类型和相等性)
在这部分代码中,首先修剪$buf
,结果存储在$buf
中。然后检查$buf
是否为false
。如果为false,继续
采取行动。如果您正在寻找基础知识,请踏上征程!
试试这个代码
<?php
$buf="0 ";// (note the spaces)
//next try changing $buf="1 "; (note the spaces for trim)
echo $buf ."<----Non trimmed buf<br>" ;
$buf= trim($buf);
echo $buf ."<----trimmed buf<br>" ;
echo !$buf ."<----!buf<br>" ;
if (!$buf = trim($buf))
echo "Trimmed buf is false";
else
echo "Trimmed buf is True";
?>
输出
0 <----Non trimmed buf
0<----trimmed buf
1<----!buf
Trimmed buf is false
0如果表达式在括号内,是否会有相同的结果!($buf=trim($buf))
?@psycketom是的,这将是相同的。您可以查看优先概念以更好地理解它:+1,正如我现在所想的那样!所以我发布了我尝试过的东西!
false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))
if (!$buf = trim($buf)) {
continue;
}
<?php
$buf="0 ";// (note the spaces)
//next try changing $buf="1 "; (note the spaces for trim)
echo $buf ."<----Non trimmed buf<br>" ;
$buf= trim($buf);
echo $buf ."<----trimmed buf<br>" ;
echo !$buf ."<----!buf<br>" ;
if (!$buf = trim($buf))
echo "Trimmed buf is false";
else
echo "Trimmed buf is True";
?>
0 <----Non trimmed buf
0<----trimmed buf
1<----!buf
Trimmed buf is false