foreach auf orginalen Array zurückspielen
Andü
- php
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 ) )
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