我正在学习如何在php中使用对象和数组。我以前有一个类别数组和一个按类别在php中组织的对象数组:
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:
echo json_encode($categories);或
echo json_encode($scenarios_by_category);但是,我希望“类别”数组成为由表单的每个类别组织的对象(场景)数组:
[{name: "cat1", children: [{name: "scenario1"},{name: "scenario2"}...]}{name:"cat2", children: [...]}];我试着按以下方式修改代码:
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);
}
}但我明白错误
Cannot use object of type stdClass as array在队伍中:
array_push($categories[$curCatIndex]['children'],$scenario);我哪里出问题了?
发布于 2015-11-23 18:17:58
要访问php中的对象,请使用->,使用的是[],这是一个数组
试着改变这个
array_push($categories[$curCatIndex]['children'],$scenario);至
array_push($categories[$curCatIndex]->children,$scenario);发布于 2015-11-23 18:51:57
如果有关联数组,则可以转换为对象如下:
关联阵列
$associateArray = array(
'name' => 'Beef',
'quantity' => 1,
'unit' => 'ks',
'unit_price' => 120
);将关联数组转换为Json对象
$JsonObject = json_encode($associateArray);将Json对象转换为Json PHP (PHP中的对象)
$JsonPhpObject = json_decode($JsonObject);
echo $JsonPhpObject->name;https://stackoverflow.com/questions/33877747
复制相似问题