
Array View es una biblioteca PHP que proporciona poderosas abstracciones y utilidades para trabajar con listas de datos. Cree vistas de matrices, corte e índice utilizando notación similar a Python, transforme y seleccione sus datos utilizando operaciones encadenadas y fluidas.
composer require smoren/array-viewÍndice en una matriz hacia adelante o hacia atrás utilizando índices positivos o negativos.
| Datos | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| Índice positivo | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| Índice negativo | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
use Smoren ArrayView Views ArrayView ;
$ view = ArrayView:: toView ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 ]);
$ view [ 0 ]; // 1
$ view [ 1 ]; // 2
$ view [- 1 ]; // 7
$ view [- 2 ]; // 6 Use notación de corte similar a Python para seleccionar un rango de elementos: [start, stop, step] .
use Smoren ArrayView Views ArrayView ;
$ originalArray = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ];
$ view = ArrayView:: toView ( $ originalArray );
$ view [ ' 1:6 ' ]; // [2, 3, 4, 5, 6]
$ view [ ' 1:7:2 ' ]; // [2, 4, 6]
$ view [ ' :3 ' ]; // [1, 2, 3]
$ view [ ' ::-1 ' ]; // [9, 8, 7, 6, 5, 4, 3, 2, 1]Inserte en partes de la matriz.
$ view [ ' 1:7:2 ' ] = [ 22 , 44 , 66 ];
print_r ( $ originalArray ); // [1, 22, 3, 44, 5, 66, 7, 8, 9]Cree subvistas de la vista original con máscaras, índices y cortes.
use Smoren ArrayView Selectors IndexListSelector ;
use Smoren ArrayView Selectors MaskSelector ;
use Smoren ArrayView Selectors SliceSelector ;
use Smoren ArrayView Views ArrayView ;
$ originalArray = [ 1 , 2 , 3 , 4 , 5 ];
$ view = ArrayView:: toView ( $ originalArray );
// Object-oriented style
$ view -> subview ( new MaskSelector ([ true , false , true , false , true ]))-> toArray (); // [1, 3, 5]
$ view -> subview ( new IndexListSelector ([ 1 , 2 , 4 ]))-> toArray (); // [2, 3, 5]
$ view -> subview ( new SliceSelector ( ' ::-1 ' ))-> toArray (); // [5, 4, 3, 2, 1]
// Scripting style
$ view -> subview ([ true , false , true , false , true ])-> toArray (); // [1, 3, 5]
$ view -> subview ([ 1 , 2 , 4 ])-> toArray (); // [2, 3, 5]
$ view -> subview ( ' ::-1 ' )-> toArray (); // [5, 4, 3, 2, 1]
$ view -> subview ( new MaskSelector ([ true , false , true , false , true ]))-> apply ( fn ( $ x ) => x * 10 );
print_r ( $ originalArray ); // [10, 2, 30, 4, 50]Seleccione directamente múltiples elementos utilizando una selección múltiple de índice de matriz.
use Smoren ArrayView Selectors IndexListSelector ;
use Smoren ArrayView Selectors MaskSelector ;
use Smoren ArrayView Selectors SliceSelector ;
use Smoren ArrayView Views ArrayView ;
$ originalArray = [ 1 , 2 , 3 , 4 , 5 ];
$ view = ArrayView:: toView ( $ originalArray );
// Object-oriented style
$ view [ new MaskSelector ([ true , false , true , false , true ])]; // [1, 3, 5]
$ view [ new IndexListSelector ([ 1 , 2 , 4 ])]; // [2, 3, 5]
$ view [ new SliceSelector ( ' ::-1 ' )]; // [5, 4, 3, 2, 1]
// Scripting style
$ view [[ true , false , true , false , true ]]; // [1, 3, 5]
$ view [[ 1 , 2 , 4 ]]; // [2, 3, 5]
$ view [ ' ::-1 ' ]; // [5, 4, 3, 2, 1]
$ view [ new MaskSelector ([ true , false , true , false , true ])] = [ 10 , 30 , 50 ];
print_r ( $ originalArray ); // [10, 2, 30, 4, 50]Combine y las subvistas de cadena una tras otra en una interfaz fluida para realizar múltiples operaciones de selección.
use Smoren ArrayView Selectors IndexListSelector ;
use Smoren ArrayView Selectors MaskSelector ;
use Smoren ArrayView Selectors SliceSelector ;
use Smoren ArrayView Views ArrayView ;
$ originalArray = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ];
// Fluent object-oriented style
$ subview = ArrayView:: toView ( $ originalArray )
-> subview ( new SliceSelector ( ' ::2 ' )) // [1, 3, 5, 7, 9]
-> subview ( new MaskSelector ([ true , false , true , true , true ])) // [1, 5, 7, 9]
-> subview ( new IndexListSelector ([ 0 , 1 , 2 ])) // [1, 5, 7]
-> subview ( new SliceSelector ( ' 1: ' )); // [5, 7]
$ subview [ ' : ' ] = [ 55 , 77 ];
print_r ( $ originalArray ); // [1, 2, 3, 4, 55, 6, 77, 8, 9, 10]
// Fluent scripting style
$ originalArray = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ];
$ subview = ArrayView:: toView ( $ originalArray )
-> subview ( ' ::2 ' ) // [1, 3, 5, 7, 9]
-> subview ([ true , false , true , true , true ]) // [1, 5, 7, 9]
-> subview ([ 0 , 1 , 2 ]) // [1, 5, 7]
-> subview ( ' 1: ' ); // [5, 7]
$ subview [ ' : ' ] = [ 55 , 77 ];
print_r ( $ originalArray ); // [1, 2, 3, 4, 55, 6, 77, 8, 9, 10]Cree tuberías de selecciones que se puedan guardar y aplicar una y otra vez a nuevas vistas de matriz.
use Smoren ArrayView Selectors IndexListSelector ;
use Smoren ArrayView Selectors MaskSelector ;
use Smoren ArrayView Selectors SliceSelector ;
use Smoren ArrayView Views ArrayView ;
$ originalArray = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ];
$ selector = new PipeSelector ([
new SliceSelector ( ' ::2 ' ),
new MaskSelector ([ true , false , true , true , true ]),
new IndexListSelector ([ 0 , 1 , 2 ]),
new SliceSelector ( ' 1: ' ),
]);
$ view = ArrayView:: toView ( $ originalArray );
$ subview = $ view -> subview ( $ selector );
print_r ( $ subview [ ' : ' ]); // [5, 7]
$ subview [ ' : ' ] = [ 55 , 77 ];
print_r ( $ originalArray ); // [1, 2, 3, 4, 55, 6, 77, 8, 9, 10] Para obtener documentación detallada y ejemplos de uso, consulte la documentación de la API.
composer install
composer test-init
composer test
¡Las contribuciones son bienvenidas! No dude en abrir un problema o enviar una solicitud de extracción en el repositorio de GitHub.
ArrayView se ajusta a los siguientes estándares:
ArrayView PHP tiene licencia bajo la licencia MIT.