2011-07-08 18 views

Respuesta

1

Tener una clase que envuelve funciones PHP matriz no es tan mala idea. Hará que el código sea mucho más limpio.

echo $myAry->slice(10, 5)->reverse()->join(", "); 

Simplemente como un lenguaje normal, ya sabes.

+1

Debería dejar un enlace a '_array': http://stereofrog.com/blok/on/080605 – hakre

+0

que se ve muy bien @hakre. @stereofrog, ¿cómo se debe acceder a los datos dentro del método slice() sin duplicar datos? – pocesar

4

Siempre se puede trabajar en la copia matriz:

$array = $object->getArrayCopy(); 
// modify $array as needed, e.g. array_slice(....) 
$object = new ArrayObject($array); 

Hay algún momento en el pasado era la idea de hacer todas las funciones que aceptan matrices (o probablemente muchos de ellos) para aceptar ArrayObject también. Pero no sé qué tan lejos ha ido eso y si todavía se sigue. Creo que ArrayObject es más una cuestión de comportamiento que reemplazar el arreglo nativo en PHP.

pregunta relacionada: PHP Array and ArrayObject

+0

Esto es fácil de implementar, pero está mal en la memoria. Si eso es importante, valdrá la pena simplemente implementar su propia clase similar a ArrayObject, donde tendrá acceso a los datos de la matriz privada, de modo que pueda manipularla directamente. – Matthew

+0

Debo admitir que no tengo ni idea acerca de las funciones internas de ArrayObject. – hakre

+0

Estaba buscando evitar el uso de getArrayCopy() debido al tamaño de la matriz (+ 400k elementos). – pocesar

Cuestiones relacionadas