我正在使用PHP读取JSON数据,并且该数据包含空对象(如{}).所以问题是,我必须以不同的方式处理对象为空的情况,但我找不到足够好的方法来进行检查.empty(get_object_vars(object))看起来太可怕而且非常低效.有没有好的方法来检查?
Gre*_*reg 25
您可以将其强制转换为数组(遗憾的是,您无法在调用时执行此操作empty():
$x = (array)$obj;
if (empty($x))
...
Run Code Online (Sandbox Code Playgroud)
或者转换为数组并且count():
if (count((array)$obj))
...
Run Code Online (Sandbox Code Playgroud)
Øys*_*sen 25
你要反序列化多少个对象?除非empty(get_object_vars($object))或投射阵列被证明是一个主要的减速/瓶颈,我不会担心 - 格雷格的解决方案就好了.
我建议$associative在解码JSON数据时使用该标志,但是:
json_decode($data, true)
Run Code Online (Sandbox Code Playgroud)
这将JSON对象解码为普通的旧PHP数组而不是stdClass对象.然后你可以检查空对象使用empty()并创建用户定义类的对象而不是使用stdClass,从长远来看这可能是一个好主意.