Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中发现构造错误的对象是否为空_Php_Object - Fatal编程技术网

如何在PHP中发现构造错误的对象是否为空

如何在PHP中发现构造错误的对象是否为空,php,object,Php,Object,我正在处理一个类反馈的对象。出于某种原因,该类会抛出一个具有编号属性(0、1、2等)的对象。我需要检查对象是否为空。标准技巧empty(get\u object\u vars($obj))不起作用,因为get\u object\u vars即使对象具有(编号的)属性,也会返回空数组 作为参考,我使用的对象是由Solenlight API的PHP接口的LegitorsZipCode方法返回的对象。您可以看到示例响应的打印。\r。根据代码判断,作者犯了将数字索引数组强制转换为对象的错误。这使得按名称

我正在处理一个类反馈的对象。出于某种原因,该类会抛出一个具有编号属性(0、1、2等)的对象。我需要检查对象是否为空。标准技巧
empty(get\u object\u vars($obj))
不起作用,因为
get\u object\u vars
即使对象具有(编号的)属性,也会返回空数组


作为参考,我使用的对象是由Solenlight API的PHP接口的LegitorsZipCode方法返回的对象。您可以看到示例响应的打印。\r。

根据代码判断,作者犯了将数字索引数组强制转换为对象的错误。这使得按名称获取对象属性变得不可能,尽管您应该仍然能够对其进行
foreach
。您还可以简单地将其转换回数组:
$results=(array)$obj。然后,
计数
数组。

这似乎起作用:

if (current($obj) === false)
  echo "is empty\n";

它可能对数组进行隐式转换。

这就是为什么不将数字索引数组转换为对象。虽然您可以将对象强制转换回数组…请注意,强制转换到数组将为您提供字符串键
$foo[“0”]
,而不是
$foo[0]
@bob the destroyer,我明白您的意思了<代码>$foo=(数组)$obj
不同于
$foo->{0}='bar',这很奇怪。我现在已经删除了我的答案,因为除了将其转换为数组之外,我不知道还有什么其他方法。@konforce:所以界面现在出了问题,所以我放弃了尝试来解释一个证明。但是是的,这里讨论的都是密钥/属性名的类型。+1。我认为将其转换为显式数组是最好的方法。我可能会简单地覆盖原始对象
$obj=(array)$obj
,并按照powers的意图使用它。