[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Die Sontagsfrage ist heute eine PHP Frage : foreach


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 veraenderst, aendert 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 grosse 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 urspruenglichen Arrays auf einmal
in eine Liste kopiert (statt jeweils nur einen Eintrag zu betrachten). Da ist
es schon wahrscheinlicher, dass es gross sein koennte. Aber abgesehen vom
Speicherplatzverbrauch laeuft 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/