实现根据数组的值进行分组的方法,可以借助PHP自带的函数array_reduce()和array_merge()。具体步骤如下:
实现根据数组的值进行分组的方法,可以借助PHP自带的函数array_reduce()和array_merge()。具体步骤如下:
- 定义初始结果数组
通过array_reduce()函数对数组进行遍历,将结果放入一个初始化的空数组中。
$groups = array_reduce($arr, function($result, $item) {
...
return $result;
}, array());
- 判断值是否已有分组
在循环中,通过判断当前值是否已经有分组来决定将其添加到已有分组中,还是创建新的分组。
$groups = array_reduce($arr, function($result, $item) {
$grouped = false;
foreach ($result as $key => $group) {
if ($item['group'] == $key) {
$result[$key][] = $item;
$grouped = true;
break;
}
}
if (!$grouped) {
$result[$item['group']] = array($item);
}
return $result;
}, array());
- 返回分组后的结果
最后,通过返回结果数组$groups来获取分组后的数组数据。
完整代码示例1:
<?php
$arr = array(
array('name' => 'apple','group' => 'fruit'),
array('name' => 'pear','group' => 'fruit'),
array('name' => 'carrot','group' => 'vegetable'),
array('name' => 'onion','group' => 'vegetable'),
array('name' => 'beef','group' => 'meat'),
);
$groups = array_reduce($arr, function($result, $item) {
$grouped = false;
foreach ($result as $key => $group) {
if ($item['group'] == $key) {
$result[$key][] = $item;
$grouped = true;
break;
}
}
if (!$grouped) {
$result[$item['group']] = array($item);
}
return $result;
}, array());
print_r($groups);
?>
输出结果:
Array
(
[fruit] => Array
(
[0] => Array
(
[name] => apple
[group] => fruit
)
[1] => Array
(
[name] => pear
[group] => fruit
)
)
[vegetable] => Array
(
[0] => Array
(
[name] => carrot
[group] => vegetable
)
[1] => Array
(
[name] => onion
[group] => vegetable
)
)
[meat] => Array
(
[0] => Array
(
[name] => beef
[group] => meat
)
)
)
完整代码示例2:
<?php
$arr = array(
array('name' => 'John','age' => 25,'gender' => 'male'),
array('name' => 'Mark','age' => 30,'gender' => 'male'),
array('name' => 'Jenny','age' => 22,'gender' => 'female'),
array('name' => 'Amy','age' => 26,'gender' => 'female'),
array('name' => 'David','age' => 19,'gender' => 'male'),
);
$groups = array_reduce($arr, function($result, $item) {
$grouped = false;
foreach ($result as $key => $group) {
if ($item['gender'] == $key) {
$result[$key][] = $item;
$grouped = true;
break;
}
}
if (!$grouped) {
$result[$item['gender']] = array($item);
}
return $result;
}, array());
print_r($groups);
?>
输出结果:
Array
(
[male] => Array
(
[0] => Array
(
[name] => John
[age] => 25
[gender] => male
)
[1] => Array
(
[name] => Mark
[age] => 30
[gender] => male
)
[2] => Array
(
[name] => David
[age] => 19
[gender] => male
)
)
[female] => Array
(
[0] => Array
(
[name] => Jenny
[age] => 22
[gender] => female
)
[1] => Array
(
[name] => Amy
[age] => 26
[gender] => female
)
)
)
织梦狗教程
本文标题为:PHP实现根据数组的值进行分组的方法


基础教程推荐
猜你喜欢
- php使用curl伪造来源ip和refer的方法示例 2022-10-15
- PHP7中对十六进制字符串处理的问题详解 2022-09-12
- php中将时间差转换为字符串提示的实现代码 2023-08-04
- PHP 中 var_export、print_r、var_dump 调试中的区别 2022-11-07
- 在PHP中实现使用Guzzle执行POST和GET请求 2023-03-02
- PHP中使用extract函数 2023-06-13
- PHP实现将Word文件保存到SQL Server数据库 2023-06-26
- PHP设计模式之迭代器模式的使用 2023-06-03
- PHP的PDO事务与自动提交 2022-12-11
- php中array_fill函数的实例用法 2023-05-19