Php 尝试从函数中设置变量,并检查它是否';在同一行中是错的

Php 尝试从函数中设置变量,并检查它是否';在同一行中是错的,php,Php,我试图从函数中设置一个变量,然后在同一行中检查它是否为false。如果它为false,我想执行一些代码 我的代码如下: if ($wordid = wordnet_get_wordid_from_word($word) == FALSE) { db_set_active(); return $word; } 但是,$wordid似乎没有通过此设置 我以前见过这样的东西被使用过,并且我测试过在函数内部,返回的值不是空的 那么我做错了什么?在检查变量是否为false时,是否可以在同

我试图从函数中设置一个变量,然后在同一行中检查它是否为false。如果它为false,我想执行一些代码

我的代码如下:

  if ($wordid = wordnet_get_wordid_from_word($word) == FALSE) {
db_set_active();
    return $word;
  }
但是,
$wordid
似乎没有通过此设置

我以前见过这样的东西被使用过,并且我测试过在函数内部,返回的值不是空的

那么我做错了什么?在检查变量是否为false时,是否可以在同一行上设置变量?

$wordis
正在该代码中设置。如果在
If
之后执行
echo gettype($wordis)
,您会发现它是一个布尔值。它的值将是计算此值的结果:
wordnet\u get\u wordid\u from\u word($word)==FALSE
。请记住,如果它的计算结果为
false
,它将跳过if语句,这可能就是您认为它不起作用的原因

如果您想从word($word)获取wordid,并检查是否为false,请使用括号:

if($wordid=wordnet\u从word($word))=FALSE){..

依我看,代码很混乱。把它分开。

简单:

function test() {
    return false;
}

if( !$var = test() ) {
    echo "it's false";
} else {
    echo "it's true";
}
输出:
为假

是否无法在检查时在同一行上设置变量 是否是假的

上述情况表明,这是可以做到的

另一个例子:

function hello() {
    return 'hello';
}

if( !$var = hello() ) {
    echo "it's false" . PHP_EOL;
} else {
    echo "it's true" . PHP_EOL;
}


var_dump( $var );

输出:
it's true string(5)“hello”

在作业周围放上括号,这对你有用吗?(
($wordid=wordnet\u get\u wordid\u from\u word($word))==FALSE
)是的,这似乎是可行的。为什么OP必须在赋值周围放上括号?它告诉解析器首先计算括号中的部分。因此它将分配
$wordid
函数的输出。否则它将分配
wordnet.==FALSE
的求值。它为什么分配
wordnet.==FALSE的求值
wordnet...==FALSE
?这只是解析器的规则。我想它看到了
=
,并决定将右侧的所有内容都分配给它,在本例中,这是FALSE与函数输出之间的逻辑比较。添加括号将告诉解析器首先计算括号内容。这是
操作运算符优先级
仅供参考。()