为了根据key给二维数组分组,我们可以使用PHP的array_reduce()函数。
为了根据key给二维数组分组,我们可以使用PHP的array_reduce()函数。
具体步骤如下:
1.定义一个空数组,用于存储结果;
2.使用array_reduce()函数遍历二维数组;
3.判断当前数组元素key值是否存在于结果数组中,如果存在,则将该元素push进对应的子数组;如果不存在,则创建该key对应的子数组并push元素进去;
4.最终返回结果数组。
以下是示例代码:
$arr = array(
array('name' => 'John', 'age' => 21, 'gender' => 'male'),
array('name' => 'Jane', 'age' => 25, 'gender' => 'female'),
array('name' => 'Bob', 'age' => 22, 'gender' => 'male'),
array('name' => 'Alice', 'age' => 27, 'gender' => 'female'),
array('name' => 'Mark', 'age' => 23, 'gender' => 'male'),
array('name' => 'Lisa', 'age' => 28, 'gender' => 'female')
);
$res = array_reduce($arr, function($carry, $item){
$key = $item['gender'];
isset($carry[$key]) ? array_push($carry[$key], $item) : $carry[$key] = array($item);
return $carry;
}, array());
print_r($res);
以上代码将根据gender键值,将原始数组分组为两个子数组,其中一个包含所有female的元素,另一个包含所有male的元素。输出结果为:
Array
(
[male] => Array
(
[0] => Array
(
[name] => John
[age] => 21
[gender] => male
)
[1] => Array
(
[name] => Bob
[age] => 22
[gender] => male
)
[2] => Array
(
[name] => Mark
[age] => 23
[gender] => male
)
)
[female] => Array
(
[0] => Array
(
[name] => Jane
[age] => 25
[gender] => female
)
[1] => Array
(
[name] => Alice
[age] => 27
[gender] => female
)
[2] => Array
(
[name] => Lisa
[age] => 28
[gender] => female
)
)
)
以下是另一个示例,它根据age键值将数组分为3个子数组,分别存储小于20岁的人、20岁到25岁的人、以及25岁以上的人:
$arr = array(
array('name' => 'John', 'age' => 21, 'gender' => 'male'),
array('name' => 'Jane', 'age' => 25, 'gender' => 'female'),
array('name' => 'Bob', 'age' => 22, 'gender' => 'male'),
array('name' => 'Alice', 'age' => 27, 'gender' => 'female'),
array('name' => 'Mark', 'age' => 23, 'gender' => 'male'),
array('name' => 'Lisa', 'age' => 28, 'gender' => 'female'),
array('name' => 'Tom', 'age' => 18, 'gender' => 'male'),
array('name' => 'Lucy', 'age' => 19, 'gender' => 'female'),
array('name' => 'Jack', 'age' => 30, 'gender' => 'male')
);
$res = array_reduce($arr, function($carry, $item){
$key = $item['age'] < 20 ? 'young' : ($item['age'] < 25 ? 'middle' : 'old');
isset($carry[$key]) ? array_push($carry[$key], $item) : $carry[$key] = array($item);
return $carry;
}, array());
print_r($res);
以上代码将根据age键值,将原始数组分为3个子数组,其中一个包含所有小于20岁的元素,另一个包含所有20岁到25岁的元素,第三个包含所有25岁以上的元素。输出结果为:
Array
(
[middle] => Array
(
[0] => Array
(
[name] => John
[age] => 21
[gender] => male
)
[1] => Array
(
[name] => Bob
[age] => 22
[gender] => male
)
[2] => Array
(
[name] => Mark
[age] => 23
[gender] => male
)
)
[old] => Array
(
[0] => Array
(
[name] => Alice
[age] => 27
[gender] => female
)
[1] => Array
(
[name] => Lisa
[age] => 28
[gender] => female
)
[2] => Array
(
[name] => Jack
[age] => 30
[gender] => male
)
)
[young] => Array
(
[0] => Array
(
[name] => Tom
[age] => 18
[gender] => male
)
[1] => Array
(
[name] => Lucy
[age] => 19
[gender] => female
)
)
)
编程基础网
本文标题为:PHP 根据key 给二维数组分组
基础教程推荐
猜你喜欢
- PHP实现可添加水印与生成缩略图的图片处理工具类 2022-10-05
- Laravel 5.2 文档 数据库 —— 起步介绍 2023-03-07
- PHPTree——php快速生成无限级分类 2022-10-12
- PHP使用函数用法详解 2022-11-21
- PHP Class SoapClient not found解决方法 2022-10-05
- php面向对象程序设计入门教程 2023-01-25
- Laravel5.1 框架模型远层一对多关系实例分析 2023-03-18
- php学习之简单计算器实现代码 2023-12-07
- PHP基于swoole多进程操作示例 2023-02-05
- PHP单文件上传原理及上传函数的封装操作示例 2023-02-05
