SPL frente a matriz: Cuando debemos usar SPL y cuándo debemos usar una matriz en PHP?

StackOverflow https://stackoverflow.com/questions/3166405

  •  02-10-2019
  •  | 
  •  

Pregunta

En Java y C ++, cuando no sabemos el tamaño -. Matriz no utiliza como en PHP, en lugar utiliza LinkedList etc.

En PHP SPL existe, pero la mayoría de las veces los programadores usar una matriz, por qué (porque la gente no sabe acerca de SPL)?

Cuando debemos usar una matriz en PHP y whenSPL y cuál es la diferencia en este caso entre PHP y Java / C ++?

¿Fue útil?

Solución

Cada solicitud de PHP debe inicializar todas las variables y después de la solicitud son liberados. Debido a que no viene a menudo situaciones en las estructuras de datos especiales (como maxheap, LinkedList o cola) son más eficientes que la matriz. También matrices son mucho más simples de entender y utilizar para el principiante.

Diferencia de C ++ en PHP es que las matrices longitud es dinámica. Se pueden añadir elementos siempre que lo desee.

$arr=array();
$arr[]=5; //add integer to array
echo count($arr); //1
$arr[]=7;
echo count($arr); //2

puede crear de forma dinámica y añadir variedad a otra matriz

$arr[]=array();
$arr[2][]=5;
echo count($arr); //3
echo count($arr[2]); //1

Esto creará nueva matriz, añadir elementos con valor de 5 y agregarlo como elemento de array $ arr.

$arr[][]=5;

matrices en PHP son tablas hash, lo que puede tener no solo número entero llaves pero también cadenas:

$arr['somekey']='somevalue';

Si el elemento de matriz es entero, entonces cada elemento requiere una estructura de valor (zval), que tiene 16 bytes. También se requiere un balde de hash - que tiene 36 bytes. Eso le da 52 bytes por valor. cabeceras de asignación de memoria toman otros 8 bytes * 2 -. lo que da 68 bytes

Acerca de las matrices en PHP: http://oreilly.com/catalog/progphp/ capítulo / ch05.html

Otros consejos

Nos está pidiendo que comparar dos masivamente cosas diferentes, casi la única similitud es que ambos son (arrays y el SPL) disponible en PHP.

A tal efecto, sería esencialmente sin sentido para comparar directamente, o prescribir, cuando uno se debe utilizar sobre la otra para los tiempos cuando ambos podrían utilizarse para realizar una tarea. En ese sentido, ambos podrían ser utilizados entrelazados:. Por ejemplo, usando la ArrayIterator para iterar sobre una matriz, o la ArrayObject a hacer uso de la sintaxis de estilo matriz al trabajar con objetos

También parece estar confundido, o simplemente no está claro, por lo que el SPL es; ciertamente no es restringida a las herramientas utilizadas para iterar sobre colecciones de cosas. Quiso decir para preguntar sobre las partes específicas de la biblioteca, o es usted tal vez sólo está claro lo que está disponible en ella?

Use matrices estándar, es más rápido que ArrayObject.

Uso ArrayObject sólo para poner en práctica sus propias matrices especificadas con sus métodos personalizados.

No necessarilly una confusión tal vez, porque la gente puede decidir utilizar "SplStack" en lugar de la matriz asociada a la vainilla array_push / pop funciones. O el uso de matrices en forma clásica,

y entonces existen SplDoublyLinkedList, SplQueue, SplHeap. más ArrayObject.

Así que la pregunta es válida. Y la respuesta es:. Haces lo mismo de una manera más javaish, y es más lenta

SPL en general es una tentativa a la norma imitador & "off-the-shelf" clases y API, como existen en C ++ y Java.

En mi humilde opinión no llegó a tiempo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top