sort ordenar multidimensional manejo ejemplos array php arrays arrayobject

ordenar - manejo de array en php



PHP Array y ArrayObject (6)

¿Cuál debería ser usado para manipular datos, Array o Array Object? Como buscar, ordenar y otras manipulaciones matriciales.


El Objeto de Array podría extenderse y las funciones se pueden ocultar. Por ejemplo, su función append () podría formatear un número con dos decimales antes de llamar parent :: append ()


En términos de rendimiento, no notará una diferencia real entre una array y un ArayObject . Realizo una prueba simple. La idea era crear matrices utilizando array () y ArrayObject nuevo, y rellenarlas con un número creciente de valores.

<?php for($i = 0; $i < 2; $i++){ $method = $i == 0 ? ''array'' : ''ArrayObject''; for($j = 0; $j < 7 ; $j++){ for($k = 0; $k < 100; $k++){ $max = pow(10,$j); $array = $method == ''array'' ? array() : new ArrayObject; $time = explode('' '',microtime()); $sTime = $time[0] + $time[1]; for($l = 0; $l < $max; $l++){ $array[] = ''foo '' . $i . '':'' . $j . '':'' . $k . '':'' . $l; } $time = explode('' '',microtime()); $eTime = $time[0] + $time[1]; $results[$method][$max][] = $eTime - $sTime; } } } ?>

Resultados

method lines average (µs) difference between methods (µs) array 1 2.470 -1.044 array 10 8.452 +0.315 array 100 71.862 +10.719 array 1,000 773.826 +141.962 array 10,000 7,868.731 -675.359 array 100,000 76,954.625 -17,665.510 array 1,000,000 801,509.550 -84,356.148 ArrayObject 1 3.514 +1.044 ArrayObject 10 8.137 -0.315 ArrayObject 100 61.142 -10.719 ArrayObject 1,000 631.864 -141.962 ArrayObject 10,000 8,544.090 +675.359 ArrayObject 100,000 94,620.135 +17,665.510 ArrayObject 1,000,000 885,865.698 +84,356.148

El promedio es el tiempo promedio de las 100 pruebas para cada método y cada número de líneas. La diferencia entre los métodos es bastante insignificante (84 microsegundos cuando tratas con un millón de filas ...)

He ejecutado esta prueba muchas veces, y debido a que las diferencias son siempre una cuestión de microsegundos, a veces un método es más eficiente durante una prueba, y luego menos eficiente durante la siguiente prueba ...

La elección dependerá de sus necesidades:

  • Si trata con matrices simples y hace un bucle como foreach() o calcula un promedio, una array es suficiente.
  • Si necesita iteraciones más complejas, clasificación, filtrado, ... es más fácil expandir la ArrayObject class con su propio iterador, métodos ...

La mayoría de las veces una matriz es todo lo que se necesita. ArrayObject es más útil cuando se extiende para funcionalidad en usos particulares.


arrayObject es útil sobre todo cuando se necesita la serialización.

También puedes crear tu propia clase de colección extendiendo arrayObject. Luego puede serializar su objeto de clase para transferir datos.

para operaciones simples y usuales, la matriz es más preferible que arrayObject.


usas array para array simples (y estándar)

ArrayObject es una clase, que se puede usar para mejorar tus propias Clases para usarlas como arrays (por ejemplo, una Clase de Colección).


El tipo básico es array . Este es un mapa de claves y valores que se pueden escribir, leer y acceder en un bucle.

El ArrayObject es una clase que puede ampliar para crear objetos que se comportan como si fueran matrices. Implementa métodos como count y sort que le permiten tratar un objeto como si tratara una matriz. Es parte de la SPL (Biblioteca PHP estándar).

Normalmente utilizarías array . Lo sabrás cuando necesites ArrayObject .