germania-kg / filteriterators
二维遍历器的过滤器
2.2.7
2023-01-03 08:19 UTC
Requires
- php: ^7.4|^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- php-coveralls/php-coveralls: ^2.0
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^9.0
README
Germania KG · FilterIterators
二维遍历器的过滤器。
使用Composer安装
$ composer require germania-kg/filteriterators
或者,直接将此包添加到您的 composer.json:
"require": { "germania-kg/filteriterators": "^2.0" }
BlankSplitFilterIterator
让所有给定字段通过空格分隔后形成的数组中包含某个单词的项目通过。构造函数接受任何可遍历的对象。
可遍历对象可以包含数组或(StdClass)对象。
<?php use Germania\FilterIterators\BlankSplitFilterIterator; $items = array( [ 'foo' => 'bar john doe'], [ 'foo' => 'john bar doe'], [ 'foo' => 'john doe bar'], [ 'foo' => ['john', 'doe', 'bar']], ); // Convert above arrays to StdClasses $objects = array_map(function ($a) { return (object) $a; }, $items); $filter = new BlankSplitFilterIterator( $items, "foo", "bar" ); echo iterator_count( $filter ); // 4 $filter = new BlankSplitFilterIterator( $objects, "foo", "bar" ); echo iterator_count( $filter ); // 4
WordRegexFilterIterator
让所有给定字段匹配单词的项目通过。构造函数接受任何可遍历的对象。
可遍历对象可以包含数组或(StdClass)对象。
<?php use Germania\FilterIterators\WordRegexFilterIterator; $items = array( [ 'foo' => 'bar john doe'], [ 'foo' => 'john bar doe'], [ 'foo' => 'john doe bar'], [ 'foo' => 'bar,john,doe'], [ 'foo' => 'john,bar,doe'], [ 'foo' => 'john,doe,bar'], [ 'foo' => 'john,doe,white-bar'], [ 'foo' => 'john,doe,bar-black'] ); // Convert above arrays to StdClasses $objects = array_map(function ($a) { return (object) $a; }, $items); $filter = new WordRegexFilterIterator( $items, "foo", "bar" ); echo iterator_count( $filter ); // 8 $filter = new WordRegexFilterIterator( $objects, "foo", "bar" ); echo iterator_count( $filter ); // 8
KeyNotFalseFilterIterator
让所有未被明确排除(使用 active=false
或 active=0
)的项目通过。
构造函数接受任何可遍历的对象。
可遍历对象可以包含数组或(StdClass)对象。
<?php use Germania\FilterIterators\KeyNotFalseFilterIterator; // Items may be Arrays or StdClass objects $data = [ // These are not "inactive" [ 'name' => 'John', 'active' => true ], [ 'name' => 'George' ], // but these are: [ 'name' => 'Paul', 'active' => false ], [ 'name' => 'Ringo', 'active' => 0 ], ]; $filter = new KeyNotFalseFilterIterator( $data, "active" ); foreach( $filter as $item ): // John // George echo $item['name']; endforeach;
NotEmptyFieldFilterIterator
让所有具有非空值字段的项通过。
构造函数接受任何可遍历的对象。
可遍历对象可以包含数组或(StdClass)对象。
<?php use Germania\FilterIterators\NotEmptyFieldFilterIterator; // Items may be Arrays or StdClass objects $data = [ // These are not "inactive" [ 'name' => 'John', 'active' => true ], [ 'name' => 'George' ], // but these are: [ 'name' => 'Paul', 'active' => false ], [ 'name' => 'Ringo', 'active' => 0 ], ]; $filter = new NotEmptyFieldFilterIterator( $data, "active" ); foreach( $filter as $item ): // John echo $item['name']; endforeach;
问题
请参阅 问题列表。
开发
$ git clone https://github.com/GermaniaKG/FilterIterators.git
$ cd FilterIterators
$ composer install
单元测试
可以将 phpunit.xml.dist
复制到 phpunit.xml
并根据您的需求进行修改,或者保持原样。运行 PhpUnit 测试或composer脚本,如下所示
$ composer test # or $ vendor/bin/phpunit