首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >!$variable = $variable inside if

!$variable = $variable inside if
EN

Stack Overflow用户
提问于 2013-04-05 19:17:03
回答 4查看 169关注 0票数 2

我一直在钻研PHP服务器和客户端here的基础知识。

然后我偶然发现了这几行代码(摘自上面的链接第一个例子,发生在while内部):

代码语言:javascript
复制
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快把我逼疯了。

首先,我对如何为boolean赋值以及如何需要赋值感到困惑。

其次,我很难完全理解整个表达式。

有人能解释一下if里面发生了什么,以及它是如何应用到服务器上下文中的吗?

另外,如果这个问题没有问好,请原谅。我只是对那里发生的事情太困惑了,也不知道具体要问什么。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-05 19:18:58

在此语句中,没有对布尔值进行赋值。我们正在比较false的类型和false的值(true,false,而不仅仅是0)。您可以阅读有关该here的内容

代码语言:javascript
复制
if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ)))

然后

代码语言:javascript
复制
if (!$buf = trim($buf)) {
    continue;
}

这与

代码语言:javascript
复制
$buf = trim($buf);
if ($buf == false) {
  continue;
}

所以,为了解释原文:

代码语言:javascript
复制
// The assignment happens first and then we're checking the boolean value
if (!$buf = trim($buf))
票数 5
EN

Stack Overflow用户

发布于 2013-04-05 19:24:50

下面是代码的解释。

代码语言:javascript
复制
false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))

首先,调用socket_read,并将结果存储在$buf中。然后将$buffalse进行比较,以确定它是否是bool以及它的值是否为false。(===表示同时具有相同的类型和相等)

代码语言:javascript
复制
if (!$buf = trim($buf)) {
    continue;
}

在这部分代码中,首先修剪$buf并将结果存储在$buf中。然后检查$buf是否为false。如果为false,continue将采取行动。

票数 1
EN

Stack Overflow用户

发布于 2013-04-05 19:21:54

该表达式是可拆分的。

  • $buf = trim($foo)
  • $check = !$buf
  • if ($check) { something(); }

首先获取变量,然后检查它的值是否为false (可能是falsenull可能是0),最后oyu根据该信息进行切换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15832530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档