Search K
Appearance
👇公众号👇---👇 微信 👇
有缘人请我喝杯咖啡吧
👇 微信 👇---👇支付宝👇
Appearance
TIP
我们经常拿到一个二维数组出来,会发现结果和自己想要的有些偏差,可能需要根据二维数组里的某个字段对数组分组。这篇文章主要介绍了PHP 根据key 给二维数组分组的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
$data = [
['id' => 1, 'name' => 'Alice', 'age' => 30],
['id' => 2, 'name' => 'Bob', 'age' => 25],
['id' => 3, 'name' => 'Charlie', 'age' => 35],
['id' => 4, 'name' => 'David', 'age' => 30],
];
age
字段对数组进行分组array_reduce
函数实现,封装成方法如下/**
* 根据key给二维数组分组
* @param $array
* @param $key
* @return array
*/
function groupBy($array, $key) {
return array_reduce($array, function ($carry, $item) use ($key) {
$carry[$item[$key]][] = $item;
return $carry;
}, []);
}
$grouped = groupBy($data, 'age');
print_r($grouped);
foreach
循环实现,封装成方法如下/**
* 根据key给二维数组分组
* @param $array
* @param $key
* @return array
*/
function groupBy($array, $key) {
$result = [];
foreach ($array as $item) {
if (isset($item[$key])) {
$groupKey = $item[$key];
if (!isset($result[$groupKey])) {
$result[$groupKey] = [];
}
$result[$groupKey][] = $item;
}
}
return $result;
}
$grouped = groupBy($data, 'age');
print_r($grouped);
{
"30": [
{
"id": 1,
"name": "Alice",
"age": 30
},
{
"id": 4,
"name": "David",
"age": 30
}
],
"25": [
{
"id": 2,
"name": "Bob",
"age": 25
}
],
"35": [
{
"id": 3,
"name": "Charlie",
"age": 35
}
]
}