¿Se garantiza que foreach itere en el orden de la matriz en php?

2 minutos de lectura

avatar de usuario
John

Cuando se pasa una matriz a foreach ¿Se garantiza que el orden de salida sea el mismo que el de entrada? Sé que en algunos idiomas no se garantiza el orden de salida ya que cada elemento se procesa al mismo tiempo.

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.

  • (referencia) php.net/manual/en/control-structures.foreach.php

    – Gordon

    19 de enero de 2011 a las 8:41

  • Responda arriba, pero eche un vistazo a array_multisort() en caso de que alguna vez necesite ordenar la matriz antes de hacer un bucle foreach: php.net/manual/en/function.array-multisort.php

    – oliver

    19 de enero de 2011 a las 14:32

  • Vine aquí con la misma pregunta después de leer php foreach doc. No establece explícitamente que el orden se mantendrá. No hablo de ejemplos ni de comentarios. La única referencia es a reset() hablando del elemento actual y del siguiente elemento.

    – Sebastián

    04/06/2013 a las 19:22

  • Y yo tampoco. Acabo de mirar la llamada “referencia” y no pude ver nada que indique que PHP conserva el orden de entrada de las matrices asociativas, según la especificación. A menos que haya otra referencia más significativa, la pregunta aún no tiene respuesta (formalmente hablando) y puede depender tanto de la implementación como de la versión.

    – Hibou57

    12 de agosto de 2013 a las 8:07


  • Realmente desearía que hubieras dado un ejemplo de código en tu pregunta.

    –Kellen Stuart

    25 de junio de 2016 a las 6:10

avatar de usuario
Poonam Bhatt

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

La referencia relevante podría no ser la de foreach o ordenar como se mencionó anteriormente, pero el de matriz en su lugar.

Lenguaje de referencia — Matrices dice:

Una matriz en PHP es en realidad un mapa ordenado.

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

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

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad