在PHP中,可以使用array_reduce函数来按特定键分组数组。下面是一个示例代码:
'John', 'age' => 20, 'score' => 85],
['name' => 'Alice', 'age' => 22, 'score' => 92],
['name' => 'Bob', 'age' => 20, 'score' => 78],
['name' => 'Jane', 'age' => 22, 'score' => 88],
['name' => 'Mark', 'age' => 21, 'score' => 90],
];
// 按年龄分组
$groupedByAge = array_reduce($students, function($result, $student) {
$age = $student['age'];
if (!isset($result[$age])) {
$result[$age] = [];
}
$result[$age][] = $student;
return $result;
}, []);
// 按分数分组
$groupedByScore = array_reduce($students, function($result, $student) {
$score = $student['score'];
if (!isset($result[$score])) {
$result[$score] = [];
}
$result[$score][] = $student;
return $result;
}, []);
// 输出结果
echo "按年龄分组:\n";
print_r($groupedByAge);
echo "\n按分数分组:\n";
print_r($groupedByScore);
?>
运行上述代码,将得到以下输出结果:
按年龄分组:
Array
(
[20] => Array
(
[0] => Array
(
[name] => John
[age] => 20
[score] => 85
)
[1] => Array
(
[name] => Bob
[age] => 20
[score] => 78
)
)
[22] => Array
(
[0] => Array
(
[name] => Alice
[age] => 22
[score] => 92
)
[1] => Array
(
[name] => Jane
[age] => 22
[score] => 88
)
)
[21] => Array
(
[0] => Array
(
[name] => Mark
[age] => 21
[score] => 90
)
)
)
按分数分组:
Array
(
[85] => Array
(
[0] => Array
(
[name] => John
[age] => 20
[score] => 85
)
)
[92] => Array
(
[0] => Array
(
[name] => Alice
[age] => 22
[score] => 92
)
)
[78] => Array
(
[0] => Array
(
[name] => Bob
[age] => 20
[score] => 78
)
)
[88] => Array
(
[0] => Array
(
[name] => Jane
[age] => 22
[score] => 88
)
)
[90] => Array
(
[0] => Array
(
[name] => Mark
[age] => 21
[score] => 90
)
)
)
以上代码通过array_reduce函数将原始数组按年龄和分数分别分组,并输出结果。
上一篇:按特定键分组嵌套数组数据
下一篇:按特定键过滤对象数组