horst: each im zweidimensionalen array...

hallo

wie kann ich denn ein zweidimensionales array durchlaufen?

für eindimensionale gehts ja so:

while(list($key,$value)=each($array)){
  echo "$key  §value <br>";
}

wie siehts also für
$array[0][0] = "hund";
$array[0][1] = "katze";
$array[1][0] = "goldfisch";
$array[1][1] = "gubby";
aus, wenn ich

1. alle elemete haben will
2. nur die säugetiere
3. nur die zierfische

ausgegeben bekommen möchte????

gruss
horst

  1. Huhu horst

    Du musst Dein Beispiel für ein 1-dimensionales Array nur in eine
    weitere Schleife stecken. Z.B. so:

    foreach ($array as $k = $v){
     while(list($key,$value)=each($v)){
      echo "$key  $value <br>";
     }
    }

    Um nur bestimmte Array-Keys von $array zu berücksichtigen könntest Du
    es z.B. so lösen:

    $display = array(1,2);

    foreach ($array as $k = $v){
     if (! in_array($k,$display)) {
       continue;
     }
     while(list($key,$value)=each($v)){
      echo "$key  $value <br>";
     }
    }

    Viele Grüße

    lulu

  2. wie kann ich denn ein zweidimensionales array durchlaufen?

    Genauso wie ein eindimensionales, nur verschachtelt. Ein mehrdimensionales Feld ist nichts weiter als ein Feld, dessen einzelne Elemente keine Zahlen oder Zeichenketten sind, sondern selber wiederum Felder.

    für eindimensionale gehts ja so:

    while(list($key,$value)=each($array)){
      echo "$key  $value <br>";
    }

    Für ein zweidimensionales Feld entsprechend:

    while(list($key1,$value1)=each($array1))
       {
        while(list($key2,$value2)=each($value1))
         {
          echo "[$key1][$key2] = $value2 <br>";
         };
       };

    Geht natürlich auch mit foreach.

    Gruß,
      soenk.e