foreach auf orginalen Array zurückspielen
    
Andü
    
    
      
    
  - php
 nicht angemeldet
 nicht angemeldetHab 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 ) )
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
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).
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?
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
<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?
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