
Array View est une bibliothèque PHP qui fournit des abstractions et des utilitaires puissants pour travailler avec des listes de données. Créez des vues des tableaux, tranche et index à l'aide de la notation de type python, transformez et sélectionnez vos données à l'aide d'opérations enchaînées et fluide.
composer require smoren/array-viewIndex dans un tableau vers l'avant ou vers l'arrière en utilisant des index positifs ou négatifs.
| Données | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| Index positif | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| Indice négatif | -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 Utilisez la notation de tranche de type Python pour sélectionner une gamme d'éléments: [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]Insérer dans certaines parties du tableau.
$ view [ ' 1:7:2 ' ] = [ 22 , 44 , 66 ];
print_r ( $ originalArray ); // [1, 22, 3, 44, 5, 66, 7, 8, 9]Créez des sous-vues de la vue d'origine à l'aide de masques, d'index et de tranches.
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]Sélectionnez directement plusieurs éléments à l'aide d'une multi-sélection à index Array-Index.
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]Combinez et chaîne des sous-vues l'une après les autres dans une interface fluide pour effectuer plusieurs opérations de sélection.
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]Créez des pipelines de sélections qui peuvent être enregistrées et appliquées encore et encore aux nouvelles vues de tableau.
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] Pour une documentation détaillée et des exemples d'utilisation, veuillez vous référer à la documentation de l'API.
composer install
composer test-init
composer test
Les contributions sont les bienvenues! N'hésitez pas à ouvrir un problème ou à soumettre une demande de traction sur le référentiel GitHub.
ArrayView est conforme aux normes suivantes:
ArrayView PHP est concédé sous licence MIT.