
Marray View - это библиотека PHP, которая предоставляет мощные абстракции и утилиты для работы с списками данных. Создайте представления массивов, срезов и индекса, используя питон-подобные обозначения, преобразовать и выберите ваши данные, используя цепные и свободные операции.
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 ]; // 6 Используйте нотацию с кузовом, подобным Python, чтобы выбрать диапазон элементов: [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]Непосредственно выберите несколько элементов, используя мультиплектрой массив-индекс.
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]Объедините и цепные подвесы один за другим в интерфейсе бегемого, чтобы выполнить несколько операций выбора.
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.