[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Die Sontagsfrage ist heute eine PHP Frage : foreach
[Thread Prev] | [Thread Next]
- Subject: Re: Die Sontagsfrage ist heute eine PHP Frage : foreach
- From: Monika Eggers <monikakrug@xxxxxxxx>
- Date: Tue, 25 Sep 2012 23:58:48 +0200
- To: uugrn@xxxxxxxxxxxxxxx
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/