【发布时间】:2018-08-09 13:02:43
【问题描述】:
PHP 的 empty() 函数开始出现奇怪的行为。过去一切正常,但现在不行,我不明白为什么。
我有一个代表产品的 tbInventory 类。每单位一条记录。
该类有一个 getBootloaderRevision 方法/属性:
public function getBootloaderRevision() {
if (empty($this->cBootloaderRevision)) {
return null;
} else {
return $this->cBootloaderRevision;
}
}
它以前可以工作,但现在,即使成员有值,empty() 函数也会返回 true。这是一个例子:
$prod = new tbInventory($db, 1009);
$test = $prod->cBootloaderRevision;
echo $prod->cBootloaderRevision . "<br>";
echo $test . "<br>";
echo (empty($prod->cBootloaderRevision) ? "1" : "02") . "<br>";
echo (empty($test) ? "1" : "0") . "<br>";
我正在从我的数据库中加载一个项目,我知道该项目有一个 BootLoader 修订版。我在第一行声明并加载它,然后将 MEMBER 本身的值直接放入变量中。然后我回显成员和变量以证明它们都有值。
然后,我根据成员和变量的 empty() 函数的结果回显 1 或 0。结果如下:
01.07
01.07
1
0
我在这里迷路了。我不明白为什么会这样。我知道它曾经有效,我已经一年多没有碰过这个了。我们最近在服务器上进行了更新,它似乎从服务器开始就开始这样做了。我不负责更新,但我认为他们更新了操作系统和 PHP。
你见过这样的吗???
谢谢,
【问题讨论】:
-
0不被认为是空的,如果这与 db 相关,也不是 NULL。 -
@Funk
empty(0)和empty(null)非常像true...! -
__isset()是否定义在 tbInventory 类中? -
还有多少人会在这里联系我? 我明白了。 天哪。放松的人。
-
如果可能,将
tbInventory减少到显示此行为的最低限度并发布该代码;如图所示,这是不可重现的。