2017-03-06 3 views
1

Ich habe dieses verschachtelte Array und ich brauche einige Elemente aus diesem Array, aber aus irgendeinem Grund funktioniert mein Code nicht.Warum funktioniert mein Array-Code nicht? PHP 5 Array

Wenn ich var_dump verwende ich bekommen ein Array, das wie dieses Beispiel

array(2) { 
    ["item"] => array(1) { 
     [0]=> array(3) { 
      ["name"]=> string(10) "..." 
      ["id"]=> string(16) "..." 
      ["rs"]=> string(9) "attending" 
      } 
     } 
    ["id"]=> string(15) "..." 
} 

sieht würde Ich mag ID und Namen erhalten, für die ich foreach verwenden.

foreach($var as $key => $value){ 
    echo $key[0][0]; For name, but that displays nothing 
} 

habe ich auch

foreach($var as $key => $value){ 
    echo $key['item']['name']; Whenever i run this code i get an error "Cannot use string offset etc." 
} 

Ja, ich bin bewusst, dass dies eine dumme Frage, aber mein Kopf explodiert, so wenden Sie sich bitte mir Jungs helfen.

EDIT:

Also versuche ich aus diesem Array ‚name‘ zu bekommen mit foreach-Schleife, aber mein Code funktioniert nicht. Ich weiß nicht, wie ich mich besser erklären soll, sorry.

Versuchte
foreach($array as $key => $value)   
{ 
     echo $array[$key][0]["name"]; 
} 

Aber ich bin immer noch einen Fehler ‚Illegal String Offset 'name'

+1

Sie müssen den betreffenden Code als Ganzes eingeben. Bitte fügen Sie weitere Erläuterungen zu dem hinzu, was Sie zu tun versuchen. – Carcigenicate

Antwort

1

aktualisiert Kommentar

Sie die Indizierung der Array falsch zu bekommen.

Dies ist ein richtiger Index für den Namen: echo $ array ["item"] [0] ["name"];

Eine genauere Lösung ist:

foreach($array as $key => $value){ 
    echo $array[$key][0]["name"]; 
} 

Aber auch das ist immer noch falsch. Sie müssen die Logik für sich selbst herausfinden, um die Verschachtelung fortzusetzen. Aber der Kern Ihres Problems ist, dass Sie die Indizes verfälschen.

"Element" ist und Index. 0 (die Ganzzahl 0) ist ein Index. "Name" ist ein Index.

echo $ key [0] [0] nichts angezeigt, weil es wie Typisierung ist:

"item" [0] [0]

Und das nicht die Array-Referenz überhaupt. Sie brauchen $ Array dafür.

echo $ key ['item'] ['name']; Funktioniert nicht, weil es nicht auf die Array-Variable $ referenziert und nicht auf den Index 0 des Elements verweist, das die Information enthält, wo der "Name" existiert.

Ich benötige mehr Informationen über die Daten, die Sie verwenden, um eine vollständige und korrekte Antwort zu geben.

Ich vermute, dass eine vollständige und umfassende Antwort auf eine dieser beiden Schleifen wird wie folgt aussehen:

foreach($array as $key => $value){ 
    if ($key == "item") 
    { 
     echo $array[$key][0]["name"]; 
    } 
} 


foreach($array as $key => $value){ 
    if ($key == "item") 
    { 
     foreach($array[$key] as $key2 => $value2) 
     echo $array[$key][$key2]["name"]; 
    } 
} 

`

Original-Kommentar

ich nicht kommentieren kann, dass ein Tippfehler war ?

foreach ($ var als Schlüssel $ = $ value)

Sollte

foreach ($ var als $ key => $ value) sein

Wie pro Handbuch: http://php.net/manual/en/control-structures.foreach.php

+0

Es wird immer noch ein Fehler angezeigt "Ungültiger String-Offset-Name" – drpzz

+0

Probieren Sie die letzte foreach-Schleife, die ich für Sie geschrieben habe, theoretisch sollte es funktionieren, vorausgesetzt, "name" ist immer da. – FredMan

+0

Ja die letzte Antwort löste mein Problem, danke Mann. Ich wusste vorher nicht, dass ich eine if Aussage für diese foreach benötige. Ich dachte, nur mit Index in Klammern ist genug, aber ich denke, ich bin falsch: D – drpzz

0

Ich denke, dein Code stimmt nicht. Versuchen Sie Folgendes:

foreach($array as $key => $value) { 
    echo $value[$key][0]["name"]; 
}