2011-01-19 16 views
47

Cuando se pasa una matriz a foreach, ¿se garantiza que la orden de salida será la misma que la entrada? Sé en algunos idiomas que la orden de salida no está garantizada ya que cada elemento se procesa al mismo tiempo.¿Está garantizado que foreach iterará en el orden de matriz en php?

Por ejemplo, estoy pasando una matriz ordenada a foreach para escribir en un archivo. Quiero estar seguro de que la matriz se ordenará en el archivo de salida.

+3

* (de referencia) * http://php.net/manual/en/control-structures.foreach.php – Gordon

+0

respuestas anteriores, pero echar un vistazo a array_multisort() en caso de que necesite para ordenar la matriz antes de hacer un ciclo foreach: http://php.net/manual/en/function.array-multisort.php – o1iver

+2

Vine aquí con la misma pregunta después de leer php 'foreach' doc. No dice explícitamente que el orden permanecerá. No estoy hablando de ejemplos ni comentarios. La única referencia es 'reset()' hablando del elemento actual y el siguiente elemento. – Sebastian

Respuesta

30

Sí ... cualquiera sea el orden que le dé a foreach, repetirá en los mismos pedidos. Y en su caso array will be sorted in the output file.

+1

+1 - ¡Pásame! – Fenton

2

Sí - los elementos saldrán en el mismo orden en el que se encuentran dentro de la matriz.

8

Esto es correcto, foreach saldrá en el mismo orden que la matriz de entrada.

12

La referencia relevante podría no ser la de foreach o la clasificación mencionada anteriormente, pero la de la matriz en su lugar.

Language reference — Arrays dice:

una matriz en PHP es en realidad un mapa ordenado.

Cuestiones relacionadas