Como programador PHP, uso matrices para casi todo. Sé que SPLFixedArray puede ser útil en ciertos casos, y sé PHP arrays aren't very memory efficient, pero rara vez me he encontrado con casos reales en los que luchan por hacer lo que necesito.¿Cuáles son las características del tipo de matriz de PHP como estructura de datos?
Esto en contraste con cuando estoy trabajando en Java, donde me resulta absolutamente fundamental que entiendo exactamente qué estructuras de datos estoy usando, y los pros y contras de cada uno. Si alguien sugiriera que utilizo un LinkedHashMap para todo en Java, se echaría a reír del edificio.
Entonces, ¿cómo podemos hacernos con una ingeniería tan rápida y flexible en PHP? ¿Cuáles son los detalles subyacentes de las matrices PHP? A menudo se describe como "un mapa ordenado", pero deja mucho de la implementación a la especulación.
¿Cuáles son algunos casos de uso Arrays PHP son particularmente bueno en? ¿Cuáles son algunos casos de uso aparentemente simples que las matrices de PHP son realmente bastante malo en?
Por ejemplo, supongo que hay algún tipo de mejor manejo de matrices con enteros densos (por ejemplo, $arr = array('a','b','c','d','e');
) que un mapa hash ordenado, pero ¿dónde está el límite entre denso y disperso? ¿Las matrices se vuelven dramáticamente menos eficientes tan pronto como introduzco incluso una clave no ordenada, como $arr[10] = 'f';
? ¿Qué hay de $arr[1000000] = 'g';
? Supongo que PHP no ocupa el ~ 1 millón de ranuras entremedio, pero si se trata de una lista vinculada debajo de las cubiertas, presumiblemente llamando a $arr[rand()] = rand();
repetidamente tendría que hacer un nuevo pedido después de cada inserción?
Cualquier respuesta que explore las características subyacentes de las matrices PHP es bienvenida, incluso si no aborda las preguntas específicas que planteo.
¿Porque nadie espera que PHP funcione bien? –
En realidad, [no hay ningún reordenamiento involucrado] (http://codepad.org/V0Y9K9MZ). Cuando asigna una clave inexistente, se pone al final de la matriz. – Ryan
Me sorprende que el universo no se haya reiniciado después de que alguien usó 'PHP' y' strengths' en la misma oración. –