compolomus / collection
集合
dev-master
2019-10-05 13:40 UTC
Requires
- php: ^7.3
Requires (Dev)
Suggests
- ext-xdebug: ^2.6.0
This package is auto-updated.
Last update: 2024-09-06 00:42:32 UTC
README
安装
composer require compolomus/Collection
用法
use Compolomus\Collection\Collection; require __DIR__ . '/vendor/autoload.php';
创建新集合
单个添加
$collection = new Collection('stdClass'); for ($i = 0; $i <= 42; $i++) { $add = new stdClass(); $add->test = $i; $collection->addOne($add); }
批量添加
$array = []; for ($i = 0; $i <= 42; $i++) { $add = new stdClass(); $add->test = $i; $array[] = $add; } $collection->addAll($array);
限制
计数限制
$limit1 = $collection->immutable()->limit(5); echo '<pre>' . print_r($limit1->get(), true) . '</pre>'; /* Array ( [0] => stdClass Object ( [test] => 0 ) [1] => stdClass Object ( [test] => 1 ) [2] => stdClass Object ( [test] => 2 ) [3] => stdClass Object ( [test] => 3 ) [4] => stdClass Object ( [test] => 4 ) ) */
带有偏移量的限制
$limit2 = $collection->immutable()->limit(3, 3); echo '<pre>' . print_r($limit2->get(), true) . '</pre>'; /* Array ( [0] => stdClass Object ( [test] => 3 ) [1] => stdClass Object ( [test] => 4 ) [2] => stdClass Object ( [test] => 5 ) ) */
计数
echo $collection->count(); //43 echo $limit1->count(); // 5 echo $limit2->count(); // 3
排序
$sort = $limit2->immutable()->sort('test', Collection::DESC); echo '<pre>' . print_r($sort->get(), true) . '</pre>'; /* Array ( [2] => stdClass Object ( [test] => 5 ) [1] => stdClass Object ( [test] => 4 ) [0] => stdClass Object ( [test] => 3 ) ) */
LINQ
$linq = $collection->where('test > 33'); echo '<pre>' . print_r($linq->get(), true) . '</pre>'; /* Array ( [0] => stdClass Object ( [test] => 34 ) [1] => stdClass Object ( [test] => 35 ) [2] => stdClass Object ( [test] => 36 ) [3] => stdClass Object ( [test] => 37 ) [4] => stdClass Object ( [test] => 38 ) [5] => stdClass Object ( [test] => 39 ) [6] => stdClass Object ( [test] => 40 ) [7] => stdClass Object ( [test] => 41 ) [8] => stdClass Object ( [test] => 42 ) ) */