while ($row = mysqli_fetch_array($result) && strlen($row['url_key']) > 4)
{
....
}
我希望这会将获取的数组分配给 $row
然后检查该数组中元素之一的长度,但我却得到了
“PHP 通知: undefined variable :/home/dwilkins/stage_image_update.php 中的行……”
如果未分配 $row
,我预计测试会短路,并且不会测试 url 键的长度。我知道正在分配 $row,因为当我取出 && strlen...
时,它正常运行。那么导致这种行为的“幕后”到底发生了什么?我查看了 logical operators 的 PHP.net 条目,但我对此一无所知。
最佳答案
&&
有更高的 operator precedence比 =
。您需要相应地构建您的表达式(例如引入括号来改变优先级)。这是一个需要理解和注意的非常重要的基本概念。
关于php - 为什么在 PHP 中执行 bool 测试后会发生变量赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33155706/