Php 当非对象的属性明显是对象上的属性时,尝试获取该属性
早上好,很简单,为什么当我访问我的对象时会出现“尝试获取非对象的属性”错误 回音打印(票据[‘交易]) 结果如下:Php 当非对象的属性明显是对象上的属性时,尝试获取该属性,php,Php,早上好,很简单,为什么当我访问我的对象时会出现“尝试获取非对象的属性”错误 回音打印(票据[‘交易]) 结果如下: Array ( [transactions] => Array ( [0] => stdClass Object ( [vendor] => 1 [total] => 8934 [payment_terms] =&g
Array
(
[transactions] => Array
(
[0] => stdClass Object
(
[vendor] => 1
[total] => 8934
[payment_terms] => 60
[date_at] => 2015-02-09 00:00:00
[date_due] => 2015-03-11 00:00:00
)
[past_due] => 44
)
[totalAccount] => 8934
[vendor] => Sample Supplier Co.
)
1
stdClass Object
(
[vendor] => 1
[total] => 8934
[payment_terms] => 60
[date_at] => 2015-02-09 00:00:00
[date_due] => 2015-03-11 00:00:00
)
1
当我试着用这个代码循环它时
@foreach($bill['transactions'] as $t)
<td><?php print_r($t); ?></td>
@endforeach
然后,当我最终使用->访问其属性时
@foreach($bill['transactions'] as $t)
<td><?php echo $t->vendor; ?></td>
@endforeach
@foreach($t形式的票据['transactions'))
@endforeach
然后我得到了错误。顺便说一下,正如@Taalaibek所说,我正在使用LaravelBlade,代码的问题在于您试图访问非对象的属性。您的数组
$bill['transactions']
有两个元素-一个对象和一个数字,44。与其他一些语言不同,如JavaScript(在较小程度上,还有带装箱/取消装箱的Java),其中基本值是隐式对象,而PHP中只有对象是对象。在PHP中尝试使用->
访问非对象的值将抛出错误。重申一下,在JS中,您可以这样做
var x = 5;
alert(x.toString());
但在PHP中,以下代码会给您一个错误:
$x = 5;
echo $x->hello;
请注意,在Java中,所有对象都从基类继承,但在PHP中并非如此。在PHP中创建的对象不会继承自stdClass
,原语值(如44)肯定不会继承
您可以按如下方式修改代码:
@foreach($bill['transactions'] as $t)
<td><?php if(is_object($t)) echo $t->vendor; ?></td>
@endforeach
@foreach($t形式的票据['transactions'))
@endforeach
使用该函数。显示完整对象在ithelle@varunaharia中没有事务。当我使用print\r($t)时,上述对象是$t的内容;不需要在foreach中输入它,直接使用对象及其属性Hello@Ghost我需要在foreach循环中输入它,因为$bill['transactions']是一个对象数组。$bill['transactions']不完全是一个对象数组,它是一个混合数组,您的[past_due]=>44是整数。