首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PHP将对象推送到对象中的数组

如何使用PHP将对象推送到对象中的数组
EN

Stack Overflow用户
提问于 2015-11-23 18:13:49
回答 2查看 61关注 0票数 0

我正在学习如何在php中使用对象和数组。我以前有一个类别数组和一个按类别在php中组织的对象数组:

代码语言:javascript
复制
public function live_scenarios_by_category(){
  $scenario_list = $this->scenarios_model->get_scenario_data();
  if ($scenario_list){
    $categories = array();
    $scenarios_by_category = array();
    $curCatIndex = -1;
    $curCatName = NULL;
    foreach ($scenario_list as $i=>$scenario){
      $category_name = $scenario['t3'];
      if ($curCatName != $category_name){
        $curCatIndex+=1;
        $categories[$curCatIndex] = $category_name;
        $curCatName = $category_name;
      }
      $scenarios_by_category[$curCatIndex][] = $scenario;
    }
    $data['categories'] = $categories;
    $data['scenarios_by_category'] = $scenarios_by_category;
    $this->load->view('data/json_scenarios', $data);
  }
}

然后,我可以成功地输出类别或scenarios_by_category:

代码语言:javascript
复制
echo json_encode($categories);

代码语言:javascript
复制
echo json_encode($scenarios_by_category);

但是,我希望“类别”数组成为由表单的每个类别组织的对象(场景)数组:

代码语言:javascript
复制
[{name: "cat1", children: [{name: "scenario1"},{name: "scenario2"}...]}{name:"cat2", children: [...]}];

我试着按以下方式修改代码:

代码语言:javascript
复制
public function live_scenarios_by_category(){
  $scenario_list = $this->scenarios_model->get_scenario_data();
  if ($scenario_list){
    $categories = array();
    $scenarios_by_category = array();
    $curCatIndex = -1;
    $curCatName = NULL;
    foreach ($scenario_list as $i=>$scenario){
      $category_name = $scenario['t3'];
      if ($curCatName != $category_name){
        $curCatIndex+=1;
        //$categories[$curCatIndex] = $category_name;
        $cat_obj = new stdClass;
        $cat_obj->name = $category_name;
        $cat_obj->children = array();
        $categories[$curCatIndex] = $cat_obj;
        $curCatName = $category_name;
      }
      array_push($categories[$curCatIndex]['children'],$scenario);
      //$categories[$curCatIndex]['children'][] = $scenario;
    }
    $data['categories'] = $categories;
    //  $data['scenarios_by_category'] = $scenarios_by_category;
    $this->load->view('data/json_scenarios', $data);
  }
}

但我明白错误

代码语言:javascript
复制
Cannot use object of type stdClass as array

在队伍中:

代码语言:javascript
复制
array_push($categories[$curCatIndex]['children'],$scenario);

我哪里出问题了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-23 18:17:58

要访问php中的对象,请使用->,使用的是[],这是一个数组

试着改变这个

代码语言:javascript
复制
array_push($categories[$curCatIndex]['children'],$scenario);

代码语言:javascript
复制
array_push($categories[$curCatIndex]->children,$scenario);
票数 0
EN

Stack Overflow用户

发布于 2015-11-23 18:51:57

如果有关联数组,则可以转换为对象如下:

关联阵列

代码语言:javascript
复制
$associateArray = array(
                'name'          => 'Beef',
                'quantity'      => 1,
                'unit'          => 'ks',
                'unit_price'    => 120
        );

将关联数组转换为Json对象

代码语言:javascript
复制
$JsonObject = json_encode($associateArray);

将Json对象转换为Json PHP (PHP中的对象)

代码语言:javascript
复制
$JsonPhpObject = json_decode($JsonObject);
echo $JsonPhpObject->name;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33877747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档