2016-11-30 2 views
0

Ich versuche, ein assoziatives Array durchzulaufen, bekomme aber einen Undefined-Indexfehler.Undefinierter Index beim Versuch, ein assoziatives Array durchzulaufen

Unten ist das Array.

{ 
    "first":{ 
     "name":"name 1", 
     "products":[ 
      { 
       "id":2, 
       "product_id":123, 
       "category_id":1 
      }, 
      { 
       "id":3, 
       "product_id":"456" 
      } 
     ] 
    } 
} 

Ich versuche, eine Schleife durch diese wie

foreach ($array as $category => $products) { 
    echo $category; 
    foreach ($products['products'] as $product) { 
     echo $product->id; 
    } 
} 

aber ich bin ein

Undefined index: products 

Wie kann ich Schleife durch das Array-Produkte zu bekommen?

+0

Verwenden '$ array = json_decode ($ array, TRUE);' vor – jitendrapurohit

+0

Looping Was ist die Definition von '$ array'? – rbr94

Antwort

1

Sie müssen $products['products'] zu $products->products ändern, weil $products ist Objekt nicht Array.

$test='{"first":{"name":"name 1","products":[ 
{"id":2,"product_id":123,"category_id":1},{"id":3,"product_id":"456"} 
]}}'; 
echo "<pre>"; 
$array=json_decode($test); 
foreach($array as $category => $products){ 
    foreach($products->products as $product){ 
     echo $product->id."<br/>"; 
    }     
} 

demo.....

+0

Der $ test befindet sich bereits im Array. Also habe ich versucht json_decode (json_encode ($ my_array)); und dann lief das Array in foreach, wie du gesagt hast. Aber ich bekomme Undefined Eigenschaft: stdClass :: $ products – Sid

+0

Wenn Ihre Daten json ist, dann konvertieren Array und wenn Array dann json_decode entfernen. –

+0

Die Daten sind Array und beim Versuch, nicht durch json_decode übergeben Ich bekomme "Versuchen, Eigentum von Nicht-Objekt zu bekommen" – Sid