Ist foreach garantiert, dass es in der Array-Reihenfolge in PHP iteriert?
Lesezeit: 2 Minuten
John
Wenn ein Array übergeben wird foreach Ist die Ausgangsreihenfolge garantiert gleich der Eingangsreihenfolge? Ich weiß, dass in einigen Sprachen die Ausgabereihenfolge nicht garantiert ist, da jedes Element gleichzeitig verarbeitet wird.
Zum Beispiel übergebe ich ein sortiertes Array an foreach in eine Datei schreiben. Ich möchte sicher sein, dass das Array in der Ausgabedatei sortiert wird.
Antworten oben, aber werfen Sie einen Blick auf array_multisort(), falls Sie das Array jemals sortieren müssen, bevor Sie eine foreach-Schleife ausführen: php.net/manual/en/function.array-multisort.php
– o1iver
19. Januar 2011 um 14:32 Uhr
Ich kam mit der gleichen Frage hierher, nachdem ich php gelesen hatte foreach Dok. Es wird nicht ausdrücklich gesagt, dass die Ordnung bestehen bleibt. Ich spreche weder von Beispielen noch von Kommentaren. Der einzige Hinweis ist auf reset() Sprechen über das aktuelle Element und das nächste Element.
– Sebastian
4. Juni 2013 um 19:22 Uhr
Und ich auch nicht. Ich habe mir gerade die sogenannte „Referenz“ angesehen und konnte nichts sehen, was besagt, dass PHP die Eingabereihenfolge von assoziativen Arrays gemäß der Spezifikation beibehält. Sofern es keine andere aussagekräftigere Referenz gibt, ist die Frage (formal gesprochen) noch unbeantwortet und kann ebenso von der Implementierung oder Version abhängig sein.
– Hibou57
12. August 2013 um 8:07 Uhr
Ich wünschte wirklich, Sie hätten in Ihrer Frage ein Codebeispiel angegeben.
– Kellen Stuart
25. Juni 2016 um 6:10 Uhr
Poonam Bhatt
Ja … welche Reihenfolge Sie auch immer geben, es wird in denselben Reihenfolgen wiederholt. Und in Ihrem Fall array will be sorted in the output file.
Die relevante Referenz ist möglicherweise nicht die von foreach oder sortieren wie zuvor erwähnt, aber stattdessen das von array.
(Hinweis) php.net/manual/en/control-structures.foreach.php
– Gordon
19. Januar 2011 um 8:41 Uhr
Antworten oben, aber werfen Sie einen Blick auf array_multisort(), falls Sie das Array jemals sortieren müssen, bevor Sie eine foreach-Schleife ausführen: php.net/manual/en/function.array-multisort.php
– o1iver
19. Januar 2011 um 14:32 Uhr
Ich kam mit der gleichen Frage hierher, nachdem ich php gelesen hatte
foreach
Dok. Es wird nicht ausdrücklich gesagt, dass die Ordnung bestehen bleibt. Ich spreche weder von Beispielen noch von Kommentaren. Der einzige Hinweis ist aufreset()
Sprechen über das aktuelle Element und das nächste Element.– Sebastian
4. Juni 2013 um 19:22 Uhr
Und ich auch nicht. Ich habe mir gerade die sogenannte „Referenz“ angesehen und konnte nichts sehen, was besagt, dass PHP die Eingabereihenfolge von assoziativen Arrays gemäß der Spezifikation beibehält. Sofern es keine andere aussagekräftigere Referenz gibt, ist die Frage (formal gesprochen) noch unbeantwortet und kann ebenso von der Implementierung oder Version abhängig sein.
– Hibou57
12. August 2013 um 8:07 Uhr
Ich wünschte wirklich, Sie hätten in Ihrer Frage ein Codebeispiel angegeben.
– Kellen Stuart
25. Juni 2016 um 6:10 Uhr