PHP踩坑合集

122 阅读1分钟

持续更新中...

一、empty不能判断空对象

遇到的坑

在laravel model中查找数据结果集,结果集以对象的结构显示,用empty去判断是否为空,为空则提示记录不存在,否则就继续执行。但是发现empty误判了,明明对象是空的,却判断为不空。empty()这个方法是不能直接判断没有任何属性的对象是否为空的

原因

以下是例程,展示empty不能判断空对象的情况

$obj new stdClass;
if (empty($obj)) {
    echo "xxxxx";
} else {
    echo "pppp";
}

解决方法

要想判断没有任何属性的对象是否为空,最方便的方式是把对象转成数组对象。 写法一:

$obj new stdClass;
if (empty((array)$obj)) {
    echo "xxx";
} else {
    echo "ppp";
}

写法二:

$obj = new stdClass;
if (empty(get_object_vars($obj))) {
    echo "xxx";
} else {
    echo "ppp";
}