zoukankan      html  css  js  c++  java
  • **PHP错误Cannot use object of type stdClass as array in错误的

    错误:将PHP对象类型当做了PHP数组  解决方法:用对象操作符->

    今天在PHP输出一个二维数组的时候,出现了“Fatal error: Cannot use object of type stdClass as array in……”。

    这个二维数组是这样的:

    Array ( 


     [0] => stdClass Object
      [id] => 1 
      [title] => 首页招聘 
      [size] => 297*140 
      [pic] => ./upload/20130302093535.jpg 
      [state] => 0 ) 


     [1] => stdClass Object
      [id] => 2 
      [title] => 首页领队 
      [size] => 297*140 
      [pic] => ./upload/20130302093443.jpg 
      [state] => 0 ) 


     )

    输出开始写的方法是:$pic[0][title]

    结果就出现上面的错误。

    其实,数组中是返回的是一个对象,不能直接用[]来显示,正确的输出方法是:$pic[0]->title (不用加引号 )

    错误的:

    foreach($user_list as $user_key => $user_value){
    foreach ($data as $data_key => $data_value){
    if($user_list[$user_key]['user_mobile'] === $data_key){
    $user_list[$user_key]['contacts_username'] = $data_value;
    break;
    }
    }
    }

    正确:

    $user_list =$this->m_user->match_user_mobile($column_str, $mobile_array, $page_num, $page_size);
    //遍历$user_list,追加通讯录的用户名
    //遍历二维数组
    foreach($user_list as $user_key => $user_value){
    foreach ($data as $data_key => $data_value){
    if($user_list[$user_key]->user_mobile === $data_key){
    $user_list[$user_key]->contacts_username = $data_value;
    break;
    }
    }
    }

    --------------------------------------------
    public function match_user_mobile($column_str, $mobile_array,  $page_num, $page_size)
    {
    $this->db->select($column_str);
    $this->db->from('xm_user');
    $this->db->where_in('user_mobile', $mobile_array);
    //$this->db->limit(10, 20); 生成: LIMIT 20, 10 (仅限MySQL中。其它数据库有稍微不同的语法)
    $this->db->limit($page_size, ($page_num - 1)*$page_size);
    $query = $this->db->get();

    //var_dump($query); 测试
    //row_array取一行数据;result_array取多行数据,返回关联数组;result返回对象数组
    return $query->result_array();

    }
    总结:
    如果数据库用result返回,那么就是PHP对象数组,需要用对象操作符->
    如果是result_array返回,那么就是PHP关联数组,用[]即可
  • 相关阅读:
    设计模式之美学习-设计原则-面向对象基本概念(一)
    redis-分布式锁-设计与使用
    linux常用命令记录(一)
    redis-布隆过滤器使用
    jdk源码阅读-ConcurrentLinkedQueue(一)
    支付宝支付接口-app支付沙箱环境
    RocketMQ-安装
    支付宝支付接口-运行支付宝demo
    elasticsearch-文档-父子文档(十一)
    RTMPdump 源代码分析 1: main()函数
  • 原文地址:https://www.cnblogs.com/kenshinobiy/p/4360917.html
Copyright © 2011-2022 走看看