mcaskill/php-array-group-by

根据给定的键对数组进行分组。

1.0.0 2017-11-24 13:45 UTC

This package is not auto-updated.

Last update: 2024-09-20 20:10:56 UTC


README

(PHP 5 >= 5.4)
array_group_by — 根据给定的键对数组进行分组。

描述

array|null array_group_by( array $array, mixed $key1 [, mixed $... ] )

根据所有数组成员共享的给定 $key 或键集,将数组分组到数组中。

基于 Jake Zatecky 的 array_group_by() 函数。

此分支提供

  • $key 参数可以是一个闭包

参数

  • $array — 要对其实施分组的数组。
  • $key — 要分组或分割的键。可以是 字符串整数浮点数回调。如果键是 NULL,则跳过迭代的元素。如果键是回调,它必须从数组中返回一个有效的键。

    string|int callback ( mixed $item )

  • ... — 用于对下一组子数组进行分组的附加键。

返回值

返回一个多维数组,每个维度都包含通过传递的键分组的元素。

错误/异常

如果 $key 不是接受的类型之一,将抛出 E_USER_ERROR 并返回 NULL

示例

示例 #1 array_group_by() 示例

$records = [
	[
		"state"  => "IN",
		"city"   => "Indianapolis",
		"object" => "School bus"
	],
	[
		"state"  => "IN",
		"city"   => "Indianapolis",
		"object" => "Manhole"
	],
	[
		"state"  => "IN",
		"city"   => "Plainfield",
		"object" => "Basketball"
	],
	[
		"state"  => "CA",
		"city"   => "San Diego",
		"object" => "Light bulb"
	],
	[
		"state"  => "CA",
		"city"   => "Mountain View",
		"object" => "Space pen"
	]
];

$grouped = array_group_by( $records, "state", "city" );

上述示例将输出

Array
(
	[IN] => Array
		(
			[Indianapolis] => Array
				(
					[0] => Array
						(
							[state] => IN
							[city] => Indianapolis
							[object] => School bus
						)

					[1] => Array
						(
							[state] => IN
							[city] => Indianapolis
							[object] => Manhole
						)

				)

			[Plainfield] => Array
				(
					[0] => Array
						(
							[state] => IN
							[city] => Plainfield
							[object] => Basketball
						)

				)

		)

	[CA] => Array
		(
			[San Diego] => Array
				(
					[0] => Array
						(
							[state] => CA
							[city] => San Diego
							[object] => Light bulb
						)

				)

			[Mountain View] => Array
				(
					[0] => Array
						(
							[state] => CA
							[city] => Mountain View
							[object] => Space pen
						)

				)

		)
)

安装

使用 Composer

$ composer require mcaskill/php-array-group-by

不使用 Composer

为什么不使用 composer?从 gist 下载 Function.Array-Group-By.php 并将其保存到项目路径的某个位置。