array view php
1.0.0

配列ビューは、データリストを操作するための強力な抽象化とユーティリティを提供するPHPライブラリです。 Pythonのような表記法を使用して、配列、スライス、インデックスのビューを作成し、ChainedおよびFluent操作を使用してデータを変換して選択します。
composer require smoren/array-view正または負のインデックスを使用して、前方または後方に配列にインデックスを付けます。
| データ | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| 正のインデックス | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| 負のインデックス | -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 ]; // 6Pythonのようなスライス表記を使用して、さまざまな要素を選択します。 [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]配列の一部に挿入します。
$ view [ ' 1:7:2 ' ] = [ 22 , 44 , 66 ];
print_r ( $ originalArray ); // [1, 22, 3, 44, 5, 66, 7, 8, 9]マスク、インデックス、スライスを使用して、元のビューのサブビューを作成します。
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]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]Fluentインターフェイスで次々とサブビューを組み合わせて、複数の選択操作を実行します。
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]保存できる選択のパイプラインを作成し、新しい配列ビューに何度も適用できます。
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] 詳細なドキュメントと使用例については、APIドキュメントを参照してください。
composer install
composer test-init
composer test
貢献は大歓迎です!お気軽に問題を開くか、GitHubリポジトリにプルリクエストを送信してください。
ArrayViewは次の基準に準拠しています。
ArrayView PHPは、MITライセンスに基づいてライセンスされています。