Re: Die Sontagsfrage ist heute eine PHP Frage : foreach

Autor: Monika Eggers <monikakrug_at_arcor.de>
Datum: Tue, 25 Sep 2012 23:58:48 +0200
Am 23.09.2012 12:50, schrieb Christian Eichert:
> Thema foreach, es geht mir um das sortieren, zB alphabetisches
> sortieren. oder wie auch immer.
>
> //FALL1
> foreach ($array as $key => $value){
>      echo "Key: $key; Value: $value<br />\n";
> }
>
> //FALL 2
> foreach ($array as $key => &$value){
>      echo "Key: $key; Value: $value<br />\n";
> }
>
> //FALL 3
> while (list($key, $value) = each($array)) {
>      echo "Key: $key; Value: $value<br />\n";
> }
>
> Wo ist da der unterschied und wie sortiere ich meine $values am besten.
> Was ist der & vor $value

Also ich kann zwar kein/kaum PHP, aber Google sagt, dass & (Ampersand) 
bei PHP ist wie in C/C++, das ist dann eine Referenz statt einer Kopie 
des Wertes. So lange du nur liest, wie in diesem Beispiel, macht das 
fast keinen Unterschied. Aber wenn du es veränderst, ändert es eben bei 
der Referenz (Fall 2) das Original mit (weil es ja nur ein Zeiger auf 
das Original ist) und bei der Kopie (Fall 1) nicht. Der "kleine 
Unterschied", wenn man nur liest und nicht schreibt, ist, dass der 
Speicherplatz nochmal gebraucht wird. Wenn das also riesig große Daten 
sind, lohnt es sich ggf., sie nur zu referenzieren statt zu kopieren. 
Das ist aber nicht so wahrscheinlich bei einer einzelnen Variable.

Bei Fall 3 werden am Anfang alle Inhalte des ursprünglichen Arrays auf 
einmal in eine Liste kopiert (statt jeweils nur einen Eintrag zu 
betrachten). Da ist es schon wahrscheinlicher, dass es groß sein könnte. 
Aber abgesehen vom Speicherplatzverbrauch läuft es genau so wie Fall 1, 
also kopieren, keine Referenzen.

VG,
Monika.
-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/
Empfangen am 25.09.2012

Dieses Archiv wurde generiert von hypermail 2.2.0 : 25.09.2012 CEST