PHP bietet unter foreach eine Möglichkeit an, die Werte des originalen Arrays direkt anzusprechen. Programmierer die von dieser Möglichkeit nicht bescheid wissen, bauen dann oftmals Konstrukte wie:
foreach ($array as $key => $value) { $array[$key] = funktionsname($array[$key]); }
Bei diesem Beispiel wird der Wert des Arrays einer Funktion übergeben und danach überschrieben. Dabei ginge es viel einfacher:
foreach ($array as &$value) { $value = funktionsname($value); }
Hier wird eine Referenz auf “value” gesetzt. Eine Referenz ist eine weitere Variable die auf den gleichen Wert im Speicher zeigt. Im Umkehrschluss wird der Speicher auch erst dann wieder freigegeben, sobald keine Variable mehr auf den Wert zeigt.
4 Antworten für "foreach mit Referenzen"
Der wichtige Unterschied besteht darin, dass das erste Beispiel den return Wert der Funktion wieder im Array speichert. Dies ist bei
$value = funktionsname($value);
nicht der Fall.
Geht natürlich nur, wenn “funktionsname” auch etwas mit Arrays anzufangen weiß…
dersutter: lol.
hehe lol toller tip.
es gibt situationen, wo referenzen einfach nur langsam sind. wie hier.
Kommentar verfassen