ホームページ  >  記事  >  バックエンド開発  >  PHPで2次元配列をキーごとにグループ化する方法を詳しく解説

PHPで2次元配列をキーごとにグループ化する方法を詳しく解説

墨辰丷
墨辰丷オリジナル
2018-05-29 16:10:222353ブラウズ

この記事では、主に PHP による 2 次元配列のキー別グループ化に関する情報を紹介します。非常に優れており、必要な方は参考にしてください。結果が希望のものと異なる場合は、2 次元配列の特定のフィールドに従って配列をグループ化する必要がある場合があります。

まず次の配列を見てください。

Array
(
[0] => Array
(
[id] => 1
[wo_id] => 2
[evaluate_id] => 1
[type] => 分组1
[ctime] => 2016-12-02 11:39:34
)
[1] => Array
(
[id] => 2
[wo_id] => 31
[evaluate_id] => 2
[type] => 分组1
[ctime] => 2016-12-12 11:39:50
)
[2] => Array
(
[id] => 3
[wo_id] => 31
[evaluate_id] => 4
[type] => 分组2
[ctime] => 2016-12-02 11:40:01
)
[3] => Array
(
[id] => 4
[wo_id] => 2
[evaluate_id] => 5
[type] => 分组2
[ctime] => 2016-12-07 10:21:40
)
[4] => Array
(
[id] => 5
[wo_id] => 2
[evaluate_id] => 3
[type] => 分组2
[ctime] => 2016-12-07 10:21:51
)
[5] => Array
(
[id] => 6
[wo_id] => 2
[evaluate_id] => 2
[type] => 分组3
[ctime] => 2016-12-07 10:21:56
)
[6] => Array
(
[id] => 7
[wo_id] => 4
[evaluate_id] => 2
[type] => 分组3
[ctime] => 2016-12-07 10:22:10
)
)


これは、配列内のデータをタイプ (グループ化) に応じて個別に処理する場合 (グループ化されていない場合) の非常に典型的な例です。ループされる可能性があります。非常に冗長になるため、次のグループ化関数があります:

  public static function array_group_by($arr, $key)
{
$grouped = [];
foreach ($arr as $value) {
$grouped[$value[$key]][] = $value;
}
// Recursively build a nested grouping if more parameters are supplied
// Each grouped array value is grouped according to the next sequential key
if (func_num_args() > 2) {
$args = func_get_args();
foreach ($grouped as $key => $value) {
$parms = array_merge([$value], array_slice($args, 2, func_num_args()));
$grouped[$key] = call_user_func_array('array_group_by', $parms);
}
}
return $grouped;
}


$arr: 2 次元配列

$key: キーグループ化する必要があります code>$arr : 二维数组

$key: 需要分组的key

得られた結果は次のとおりです:


Array
(
[分组2] => Array
(
[0] => Array
(
[id] => 1
[wo_id] => 2
[evaluate_id] => 1
[ctime] => 2016-12-02 11:39:34
[type] => 分组2
)
[1] => Array
(
[id] => 2
[wo_id] => 31
[evaluate_id] => 2
[ctime] => 2016-12-12 11:39:50
[type] => 分组2
)
[2] => Array
(
[id] => 3
[wo_id] => 31
[evaluate_id] => 4
[ctime] => 2016-12-02 11:40:01
[type] => 分组2
)
)
[分组1] => Array
(
[0] => Array
(
[id] => 4
[wo_id] => 2
[evaluate_id] => 5
[ctime] => 2016-12-07 10:21:40
[type] => 分组1
)
[1] => Array
(
[id] => 5
[wo_id] => 2
[evaluate_id] => 3
[ctime] => 2016-12-07 10:21:51
[type] => 分组1
)
)
)


上記がこの記事の全内容です。皆様の学習に役立つことを願っています。


関連する推奨事項:

PHP フィルター 2 次元配列と 3 次元配列、php 2 次元配列 array

PHP フィルター 2 次元配列と 3 次元配列、php 2 次元array array_PHP チュートリアル

2 次元配列と 3 次元配列の PHP フィルタリング、PHP 2 次元配列 array


以上がPHPで2次元配列をキーごとにグループ化する方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。