PHP 根据key 给二维数组分组

为了根据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 给二维数组分组 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • PHP实现指定字段的多维数组排序函数分享

    下面我就来详细讲解如何实现PHP指定字段的多维数组排序函数,包含以下几个部分: 定义排序函数的参数和返回值结构 通过usort()函数实现多维数组排序 在排序函数中按指定字段排序 结合示例说明函数使用方法和效果 首先,我们需要定义排序函数的参数和返回值结构,以便在后续排序过程中进行正确的调用和返回。示例代码如下: function multi_array_s…

    PHP 2023年5月26日
    00
  • PHP文件上传实例详解!!!

    下面我将详细讲解“PHP文件上传实例详解!!!”的完整攻略。 PHP文件上传实例详解!!! 为什么需要文件上传? 在Web开发中,经常需要上传文件,比如头像、音视频、文档等等。其实,无论何种场景,本质上都是将文件从客户端上传至服务端,再存储到服务器上,供后续的使用。 PHP文件上传流程 PHP文件上传流程分为客户端和服务端两部分: 客户端通过表单提交文件到服…

    PHP 2023年5月26日
    00
  • 小程序多图列表实现性能优化的方法步骤

    下面是针对小程序多图列表实现性能优化的方法步骤的完整攻略。 1. 对图片进行压缩处理 大型图片会严重影响网站的加载速度,因此可以通过压缩图片来降低文件大小,以提高网站的性能。在小程序中,可以使用imigix等工具将图片进行实时处理,以便更快地加载。 下面是一个简单的示例代码,展示了如何使用imigix对图片进行压缩处理: const imigix = req…

    PHP 2023年5月30日
    00
  • 使命召唤12常见问题及解决方法大全

    使命召唤12常见问题及解决方法大全 问题1:游戏闪退,无法启动 解决方法: 更新显卡驱动程序:可以到显卡制造商官网或者Windows官方网站下载最新驱动程序。 运行游戏之前先关闭不必要的软件:有些软件会占用大量内存和CPU资源,导致游戏无法启动或者闪退。 检查游戏文件完整性:在Steam或者其他游戏平台中,可以进行游戏文件完整性检查,修复损坏的游戏文件。 问…

    PHP 2023年5月27日
    00
  • php strftime函数的详细用法

    下面是“php strftime函数的详细用法”的完整攻略。 介绍 strftime() 函数是 PHP 中的一个格式化日期函数,类似于 date() 函数,但它可以根据 $locale 参数来处理日期的本地化。它使用与 strftime C 函数相同的语法格式。 语法 strftime(string $format, int $timestamp = nu…

    PHP 2023年5月25日
    00
  • Thrift的安装方法和简单实例

    下面我就为您介绍一下“Thrift的安装方法和简单实例”的完整攻略。 Thrift的安装方法 Thrift是一款多语言的RPC框架,所以它支持各种不同语言的编程环境,包括C++, Java, Python等。因此,Thrift的安装方法也略有不同。 C++环境下的安装方法 下载Thrift 要下载Thrift,请确保您拥有稳定的网络环境,然后在终端中执行以下…

    PHP 2023年5月27日
    00
  • PHP函数eval()介绍和使用示例

    PHP函数eval()介绍和使用示例 什么是eval()函数 eval()函数是PHP中的一种特殊函数,他可以对字符串进行解析并执行其中的PHP代码。 eval()函数的使用示例 示例1:动态生成变量名并将对应值赋予变量 <?php // 定义一个数组 $data = [ ‘username’ => ‘Tom’, ‘age’ => 20, …

    PHP 2023年5月26日
    00
  • PHP中str_replace函数使用小结

    下面是详细讲解“PHP中str_replace函数使用小结”的完整攻略: 概述 str_replace函数是PHP中一个非常常用的字符串替换函数,用于将字符串中的某一部分进行替换。 语法 函数的基本语法如下: str_replace(search, replace, subject, [count]); 其中,各个参数的含义为: search: 需要被查找和…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部