2016-04-25 40 views
0

Ich erstelle ein Array, das mit ziemlich viel Daten endet. Ein Beispiel für dieses Array ist so.Zugriff auf Daten innerhalb eines Arrays

array:9 [▼ 
    0 => array:9 [▼ 
    "ID" => "1232806" 
    "Date" => "21/04/2016" 
    "Name" => "Test" 
    "Owner" => "Someone" 
    "Value" => "2160.00" 
    "Status/Stage" => "70%" 
    0 => array:2 [▼ 
     "Structure" => "" 
     "Prospect" => "No" 
    ] 
    1 => array:2 [▼ 
     0 => array:8 [▼ 
     "Quote ID" => "Q0020" 
     "Name" => "Test" 
     "Amount" => "2160" 
     ] 
     1 => array:2 [▼ 
     0 => array:1 [▼ 
      "Type" => "New" 
     ] 
     1 => array:1 [▼ 
      "Month" => "June 16" 
     ] 
     ] 
    ] 
    ] 
] 

Ich versuche jetzt, die Daten aus diesem Array zu bekommen. Ich kann die Top-Level-Artikel ohne Problem bekommen

foreach ($array as $data) { 
    echo $data["ID"]; 
    echo $data["Date"]; 
    echo $data["Name"]; 
    ... 
} 

Ich habe mit den inneren Daten jedoch zu kämpfen. Ich versuche etwas wie

foreach ($array as $data) { 
    echo $data["ID"]; 
    echo $data["Date"]; 
    echo $data["Name"]; 
    foreach ($data as $innerData) { 
     echo innerData["Structure"]; 
     echo innerData["Prospect"]; 
    } 
} 

Wenn ich dies jedoch tun, klagt es über eine illegale String Offset. Wie kann ich auf alle verschiedenen Daten in diesem Array zugreifen?

Dank

eine Frage Erstellt zeigen, wie ich die Daten sammeln, wie ich das falsch https://stackoverflow.com/questions/36837239/processing-xml-data-into-array

+0

Was ist unterhalb von "Status/Bühne"? – aldrin27

+0

die fehlende '$' vor '$ innerData' Post Tippfehler oder Code-Bug? – apokryfos

Antwort

1
You need to assign inner array in another new index like: 
I have created innnerdata index. 

array:9 [▼ 
    0 => array:9 [▼ 
    "ID" => "1232806" 
    "Date" => "21/04/2016" 
    "Name" => "Test" 
    "Owner" => "Someone" 
    "Value" => "2160.00" 
    "Status/Stage" => "70%" 
    "innnerdata" => array:2 [ 
    0 => array:2 [ 
     "Structure" => "" 
     "Prospect" => "No" 
    ] 
    1 => array:2 [ 
     0 => array:8 [ 
     "Quote ID" => "Q0020" 
     "Name" => "Test" 
     "Amount" => "2160" 
     ] 
     1 => array:2 [ 
     0 => array:1 [ 
      "Type" => "New" 
     ] 
     1 => array:1 [ 
      "Month" => "June 16" 
     ] 
     ] 
    ] 
    ] 

    ] 
] 

kann so jetzt tun könnte es Ihnen gefällt Zugang:

foreach ($array as $data) { 
    echo $data["ID"]; 
    echo $data["Date"]; 
    echo $data["Name"]; 
    foreach ($data['innerdata'] as $innerData) { 
     echo innerData["Structure"]; 
     echo innerData["Prospect"]; 
    } 
} 

sonst Sie muss darauf zugreifen wie $ data [0] ["Struktur"], $ data [1] ["Struktur"] etc ..

1

Versuchen nach unten fließen:

foreach ($array as $k=>$data) { 
     echo $data["ID"]; 
     echo $data["Date"]; 
     echo $data["Name"]; 
    if(is_numeric($k) && is_array($data)) 
    { 

     foreach ($data as $innerData) { 
     echo innerData["Structure"]; 
     echo innerData["Prospect"]; 
     } 
    } 
} 

}

1

Von Ihrem Beispiel des Array-Eintrag nach $ data [ "name"] ist kein Array, sondern ein String

"Owner" => "Someone" 

Sie umgehen können Diese Art von Problem, indem Sie Ihren Array-Wert zu testen, um festzustellen, ob es ein Array ist und überprüfen, ob Ihr Array-Schlüssel existiert

if (is_array($innerData)) { 
    foreach ($data as $innerData) { 
     if (isset($innerData['structure'])) { 
      echo $innerData["Structure"]; 
     } 
     // This also works 
     if (array_key_exists('Prospect', $innerdData)) { 
      echo $innerData["Prospect"]; 
     } 
    } 
} 
Verwandte Themen