Andü: foreach auf orginalen Array zurückspielen

Hab wieder mal ein Problem mit foreach.
Hab einen multidimensionalen Array der in etwa so aussieht.

Array (
  [0] => Array (
    [id] => 2005_05
    [titel] => Mai 2005 )
  [1] => Array (
    [id] => 2005_04
    [titel] => April 2005 )
  [2] => Array (
    [id] => 2005_03
    [titel] => März 2005 ) )

Nun mache ich mit foreach für jeden Array der ersten Ebene eine neue "Unter-Array" und fülle sie mit Text.

foreach ($array as $key)
{
  $key[blabla] = "Nur ein Fülltext";
}

Wie spiel ich jetzt $key (ist ja nur eine Kopie) zurück auf $array, dass der folgendermaßen aussieht?

Array (
  [0] => Array (
    [id] => 2005_05
    [titel] => Mai 2005
    [blabla] => Nur ein Fülltext )
  [1] => Array (
    [id] => 2005_04
    [titel] => April 2005
    [blabla] => Nur ein Fülltext )
  [2] => Array (
    [id] => 2005_03
    [titel] => März 2005
    [blabla] => Nur ein Fülltext ) )

  1. Hallo Andü,

      
    for($i=0;$i<count($a);$i++)  
     $a[$i]['blabla']='Nur ein Fülltext';  
      
    # oder wenn es wirklich mit foreach() sein muß:  
      
    foreach($a as $k=>$v)  
     $a[$k]['blabla']='Nur ein Fülltext';  
      
    # ab Version 5.x ist aber folgendes vorzuziehen  
      
    foreach($a as &$v)  
     $v['blabla']='Nur ein Fülltext';  
    
    

    ("&$v" vgl.: Referenzen in PHP)

    Gruß aus Berlin!
    eddi

    1. Moin!

      Natürlich kann man auch mit each() etwas bauen, um vom foreach loszukommen. Das Beispiel Nr. 2 auf der Manual-Seite von each() "emuliert" in einer while-Schleife exakt das Verhalten von foreach($array as $key => $value).

      • Sven Rautenberg
      1. Da muss ich gleich mal ne allgemeine Frage hinterherschieben.

        Macht es für die Variable $key einen Unterschied ob ich foreach ($array as $key) oder foreach ($array as $key => $value) verwende? Und was beinhaltet im zweiten Beispiel $value?

        1. hi,

          Macht es für die Variable $key einen Unterschied ob ich foreach ($array as $key) oder foreach ($array as $key => $value) verwende? Und was beinhaltet im zweiten Beispiel $value?

          <zuckersuess>
          RTFM!
          </zuckersuess>

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. <zuckersuess>
            RTFM!
            </zuckersuess>

            Das bedeutet bei einem multidimensionale Array was?

            Wenn ich das richtig verstanden hab, hab ich die Funktionen sowieso falsch verwendet.
            foreach ($array as $value) und foreach ($array as $key => $value)
            Jetzt sollte es doch für $value keinen unterschied geben, oder?

            Also, hier mal Beispiele wie ich mir das vorstell...
            $array = Array ( [0] => Array ( [id] => 2005_05 [titel] => Mai 2005 ) [1] => Array ( [id] => 2005_04 [titel] => April 2005 ) [2] => Array ( [id] => 2005_03 [titel] => März 2005 ) )

            Beispiel zu foreach ($array as $value):
            $value = Array ( [id] => 2005_05 [titel] => Mai 2005 )

            Beispiel zu foreach ($array as $key => $value):
            $value = Array ( [id] => 2005_05 [titel] => Mai 2005 )
            $key = 0;

            Richtig verstanden?

            1. hi,

              foreach ($array as $value) und foreach ($array as $key => $value)
              Jetzt sollte es doch für $value keinen unterschied geben, oder?

              richtig, $value enthält in jedem falle den wert des jeweiligen elementes.
              bei der version mit $key hast du in $key zusätzlich noch den key des aktuellen elementes zur verfügung.

              Das bedeutet bei einem multidimensionale Array was?

              das $value ggf. wiederum ein array enthält, und keinen skalaren wert (zu prüfen über is_array()).
              dieses kann man dann bei bedarf wiederum mit foreach durclaufen, etc.
              wenn dabei mehrere ebenen vorkommen können, bietet sich oftmals rekursion zum durchlaufen aller ebenen an.

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }