मैं सीख रहा हूँ कि 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);
  }
}

मैं तब श्रेणियों या परिदृश्यों या तो सफलतापूर्वक उत्पादन कर सकता था_बहुत श्रेणी:

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);

मुझसे कहां गलती हो रही है?

0
mheavers 23 नवम्बर 2015, 21:13

2 जवाब

सबसे बढ़िया उत्तर

Php के उपयोग की वस्तुओं को -> उपयोग करने के लिए आप [] का उपयोग कर रहे हैं, जो एक सरणी है

इसे बदलने का प्रयास करें

array_push($categories[$curCatIndex]['children'],$scenario);

सेवा

array_push($categories[$curCatIndex]->children,$scenario);
0
mheavers 23 नवम्बर 2015, 18:22

यदि आपके पास एक सहयोगी सरणी है, तो आप नीचे दी गई वस्तु में परिवर्तित कर सकते हैं:

सहयोगी सरणी

$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;
0
Pao Im 23 नवम्बर 2015, 18:51