petemc / group-by
一个实用包,向数组添加groupBy功能,可以通过数组键或回调函数进行分组。
v1.0.0
2016-06-07 14:08 UTC
Requires (Dev)
- phpunit/phpunit: ^5.3
This package is auto-updated.
Last update: 2024-09-17 09:36:18 UTC
README
groupBy
向数组添加分组功能。数组可以通过数组键或回调函数进行分组。
示例 1:按数组键分组
<?php use function PeteMc\GroupBy\groupBy; $students = [ ['name' => 'adam', 'year' => '10'], ['name' => 'becky', 'year' => '12'], ['name' => 'chris', 'year' => '11'], ['name' => 'deborah', 'year' => '10'], ['name' => 'edward', 'year' => '12'], ]; $groupedByYear = groupBy($students, 'year'); /* $groupedByYear is equal to [ 10 => [ ['name' => 'adam', 'year' => '10'], ['name' => 'deborah', 'year' => '10'], ], 11 => [ ['name' => 'chris', 'year' => '11'], ], 12 => [ ['name' => 'becky', 'year' => '12'], ['name' => 'edward', 'year' => '12'], ], ] */
示例 2:按回调函数分组
<?php use function PeteMc\GroupBy\groupBy; $numberList = [1, 2, 3, 4, 5, 987, 554, 32]; // The array item value will be passed to the callback. $oddOrEven = function ($n) { return $n % 2 == 0 ? 'even' : 'odd'; }; $oddAndEven = groupBy($numberList, $oddOrEven); /* $oddAndEven is now equal to [ 'odd' => [1, 3, 5, 987], 'even' => [2, 4, 554, 32], ]; */
示例 3:按回调函数在对象数组中分组
类似于上面的示例,输入数组可以是一个对象数组。
<?php use function PeteMc\GroupBy\groupBy; // $students in an array of `stdClass Object` $students = [ (object) ['name' => 'adam', 'year' => '10'], (object) ['name' => 'becky', 'year' => '12'], (object) ['name' => 'chris', 'year' => '11'], (object) ['name' => 'deborah', 'year' => '10'], (object) ['name' => 'edward', 'year' => '12'], ]; $groupByYear = function ($student) { return $student->year; }; $groupedByYear = groupBy($students, $groupByYear); /* $groupedByYear is now equal to [ [10] => [ [0] => stdClass Object ( [name] => adam [year] => 10 ) [1] => stdClass Object ( [name] => deborah [year] => 10 ) ] [12] => [ [0] => stdClass Object ( [name] => becky [year] => 12 ) [1] => stdClass Object ( [name] => edward [year] => 12 ) ] [11] => [ [0] => stdClass Object ( [name] => chris [year] => 11 ) ] ] */