multidimensional manejo imprimir elementos ejemplos datos asociativo array agregar php arrays php-internals

manejo - ¿Cómo se implementan las matrices asociativas en PHP?



imprimir datos de un array php (5)

¿Alguien puede explicar cómo PHP implementa matrices asociativas? ¿Qué estructura de datos subyacente usa PHP? PHP hash la clave y la almacena en algún tipo de hash map? Tengo curiosidad porque me preguntaba cuál era el rendimiento de las matrices asociativas al insertar y buscar claves.


@EBGreen es correcto.

Lo que le proporciona algunos problemas de rendimiento interesantes, especialmente cuando trata una matriz como una lista y utiliza el operador [] (agregar matriz). PHP no parece almacenar en caché la clave numérica más grande y agregarle una, sino que parece recorrer todas las teclas para encontrar cuál debería ser la siguiente clave numérica. He reescrito scripts en Python debido a la pésima performance de array como una lista de PHP.

Las matrices asociativas tienen la tara estándar de rendimiento dict / hash.


Bueno, por lo que vale, todas las matrices PHP son matrices asociativas.




El enlace de respuesta más votado está roto y no da tanta explicación.

PHP está escrito en C y la estructura subyacente es solo una matriz C. C arrays son solo fragmentos de memoria. Los índices en las matrices C deben ser continuos, no puede tener un índice 0 y un índice 1000 que viene después. Para hacer que las claves de matriz asociativa funcionen, antes de que se agreguen a la matriz C, se convierten en índices C correctos a través de una función hash.

Para una explicación completa, encontré que este enlace es mucho más informativo.

http://nikic.github.io/2012/03/28/Understanding-PHPs-internal-array-implementation.html