[json]不是array报错

本文探讨了一段PHP代码中因对象与数组混用而导致的错误,并给出了正确的解决方法。作者发现当从foreach循环中获取变量时,该变量被误认为数组而非对象,这导致了类型不匹配的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在本机测试的时候作为array形式取值可以,但在另一台机子是就报了错,在网上找到解决答案,但不知道php的json解码规则是不是有区别。

以下是一段报错的代码

  1. foreach ($cats as $cat)
  2. {
  3. if($wp_version >= 2.1) {
  4. //var_dump($cat);
  5. $num_links[$cat['link_category']] = $cat->link_count;
  6. }
  7. else {
  8. $num_links[$cat['link_category']] = $wpdb->get_results("SELECT count(*) FROM `$wpdb->links` WHERE link_category = " . $cat['link_category'], ARRAY_A);
  9. }
  10. }

报错的就是第5行

  1. $num_links[$cat['link_category']] = $cat->link_count;

原因是用foreach取出来的$cat变量是一个Object,而不是Array,所以无法用上述方法调用,从而抛出”Cannot use object of type stdClass as array in XXX”的异常。
解决办法是用访问对象属性的方法,将$cat[’link_category’]改为$cat->link_category就可以解决问题。Durable报错都是因为这个问题
因为我只在PHP5里做过测试,所以不知道PHP4是否也有类似情况出现。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值