代码- (我在
答案 0 :(得分:1)
$tenants
是一个对象,具有属性tenants
。因此,让我们对其进行迭代:
foreach($tenants->tenants as $row) {
?>
<tr>
<td data-field='name'><?php echo $row->name; ?></td>
...
答案 1 :(得分:0)
该错误,“试图获取非对象的属性”,通常发生在您认为自己有一个对象但没有的时候,并且最终试图错误地将变量视为对象。例如:
$object1 = new Foo();
$object2 = new Foo();
$object3 = null;
$arrayOfObjects = array($object1, $object2, $object3);
foreach($arrayOfObjects as $object)
{
echo $object->Bar;
}
在调试时,您可能最终会看到循环中前两个对象的数据,但是然后,第3个数组元素为null,而不是对象,因此您将得到该错误。而且,由于您看到了其他元素的数据,因此您认为代码可以正常工作。
是的,当所有数据都正确时,代码就可以工作,但是如果您的数组有可能不包含对象,那么您将遇到问题。
例如,假设您的$ rows数组来自JSON解码的数据:
$rows[] = json_decode("...row data...");
$rows[] = json_decode("...row data...");
$rows[] = json_decode("...row data...");
...并且假设JSON解码由于某种原因(错误的JSON或其他原因)而失败,并且没有给您对象,而是给了null。最终将导致您的echo $ row-> name;代码失败,因为$ row将为空。
快速修复方法是在使用is_object()之前先对其进行检查:
foreach($rows as $row) {
if(!is_object($row)) { continue; } // Skip non-object rows
...但是您应该真正弄清楚什么是数据问题,以确保您不会忽略更大的数据问题。