php - !$variable = $variable inside if

标签 php if-statement

我一直在啃 PHP 套接字服务器和客户端的基础知识 here .

然后我偶然发现了这些行(摘自上面链接的第一个示例,发生在 while 中):

if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
    echo "socket_read() failed: reason: " . socket_strerror(socket_last_error($msgsock)) . "\n";
    break 2;
}

if (!$buf = trim($buf)) {
    continue;
}

我对读取部分没意见,并关闭连接以防读取错误。

但是下一个if让我抓狂。
首先,我对如何以及需要如何为 bool 值赋值感到困惑。
其次,我很难完全理解整个表达式。

有人可以解释一下 if 内部发生了什么,以及它如何应用于服务器上下文吗?

附言如果问题没有正确提出,请原谅。我对那里发生的事情感到很困惑,不知 Prop 体要问什么。

最佳答案

在这个语句中,没有对 bool 值的赋值。我们正在比较 false 的类型和 false 的值(true false,不仅仅是 0)。你可以读到那个 here

if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ)))

然后

if (!$buf = trim($buf)) {
    continue;
}

这是一样的

$buf = trim($buf);
if ($buf == false) {
  continue;
}

所以,解释一下原文:

// The assignment happens first and then we're checking the boolean value
if (!$buf = trim($buf))

关于php - !$variable = $variable inside if,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15832530/

相关文章:

r - if-else 条件取决于先前的值

javascript - 在 JavaScript 中使用 'return' 代替 'else'

php - 批准和拒绝 MySQL 和 PHP 不起作用

javascript - 发送 jquery ajax $.post 后重置连接

php - Sencha Touch FormPanel 中的 HTTP 请求负载

php - 表单内容作为 PostGre 查询参数

php - mysql查询以获取用户没有订单的所有产品

javascript - 在 Typescript 中使用 If-instanceof-statements 是不是很糟糕?

if-statement - 简化复杂的 if 语句

javascript - 之后的代码不能完全使用 jquery、javascript。我很困惑:(