2016-04-27 10 views
-1

Ergebnisse können nicht wie erwartet in multidimensionalen Arrays erzeugt werden.Mehrdimensionale PHP-Arrays, die das erwartete Ergebnis nicht anzeigen

Warning: Invalid argument für foreach geliefert()

$menu = array ('COL1' => array('1' => array('a', 'b', 'c', 'd'), '2', '3', '4'), 'COL2' => array('1', '2', '3', '4'), 'COL3' => array('1', '2', '3', '4'), 'COL4' => array('1', '2', '3', '4')); 

foreach ($menu as $col => $value) { 
    echo '<hr>'.$col; 
    foreach ($value as $item => $subitem) { 
     echo '<br>'.$item; 
     foreach ($subitem as $childitem) { 
      echo '<br>'.$childitem; 
     } 
    } 
} 

Wunsch Output:

Ergebnis

BE- sollte

COL1, 1, a, b, c, d, 2,3,4,

COL2, 1,2,3,4,

COL3,1,2,3,4,

COL4, 1,2,3,4

+3

Und was ist Ihr erwartetes Ergebnis? –

+0

Ergebnis sollte COL1, 1, a, b, c, d, 2,3,4, COL2, 1,2,3,4, COL3, 1,2,3,4, COL4, 1,2,3 sein , 4, – FastReply

Antwort

0

Sie diesen Block von foreach:

foreach ($menu as $col => $value) { 
    echo '<hr>'.$col; 
    if(is_array($value)){ 
     foreach ($value as $item => $subitem) {    
      if(is_array($subitem)){ 
       echo '<br>'.$item; 
       foreach ($subitem as $childitem) { 
        echo '<br>'.$childitem; 
       } 
      }else{ 
       echo '<br>'.$subitem; 
      } 
     } 
    } 
} 

Menü Array

Array 
(
    [COL1] => Array 
     (
      [1] => Array 
       (
        [0] => a 
        [1] => b 
        [2] => c 
        [3] => d 
       ) 

      [2] => 2 
      [3] => 3 
      [4] => 4 
     ) 

    [COL2] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 3 
      [3] => 4 
     ) 

    [COL3] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 3 
      [3] => 4 
     ) 

    [COL4] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 3 
      [3] => 4 
     ) 

) 

Ergebnis

COL1 
1 
a 
b 
c 
d 
2 
3 
4 

COL2 
1 
2 
3 
4 

COL3 
1 
2 
3 
4 

COL4 
1 
2 
3 
4 
+0

col2, col3 & col4 sollten in jedem von ihnen Subs 1,2,3,4 haben. – FastReply

+0

okey Ich habe es. –

+0

@FastReply, jetzt überprüfen –

0

Die dritte Ebene ist keine Array alle Zeiten. Möglicherweise hat Ihr $ Menü-Array falsche Daten. Es ist nicht so, dann müssen Sie in der zweiten Ebene überprüfen, ob $subitem ein Array ist oder nicht.

foreach ($menu as $col => $value) { 
    echo '<hr>'.$col; 
     foreach ($value as $item => $subitem) { 
      echo '<br>'.$item; 
      if(is_array($subitem)){ 
       foreach ($subitem as $childitem) { 
        echo '<br>'.$childitem; 
       } 
      } else { 
       echo '<br>'.$subitem; 
      } 
     } 

} 
+1

hast du deine Schleife getestet ???? –

+0

ja, ich habe getestet .. –

+0

Ergebnis sollte COL1, 1, a, b, c, d, 2,3,4, COL2, 1,2,3,4, COL3, 1,2,3,4 , COL4, 1,2,3,4 - "Ihr Code produziert das nicht – FastReply

0

Die Warnung kommt von der inneren Schleife foreach für dieses Array:

'COL1' => array('1' => array('a', 'b', 'c', 'd'), '2', '3', '4') 

Das erste Mal, wenn die äußere Schleife läuft $col = 'COL1' und $value=array(...);

Das erste Mal, wenn die innere Schleife ausgeführt wird, $item='1' und $subitem=array(..).

Aber das zweite Mal, wenn die innere Schleife ausgeführt wird, existiert kein assoziatives Array für den zweiten Index. Es ist nur ein Wert, so: $item='2' aber es gibt keinen Wert für $subitem

+0

also, was sollte der Code wie sein - Ergebnis sollte COL1, 1, a, b, c, d, 2,3,4, COL2, 1,2,3,4, COL3, 1,2,3,4, COL4, 1,2,3,4 – FastReply

Verwandte Themen