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中变量及部分适用方法”的完整攻略。 变量 在PHP中,变量是用于存储值的容器。变量可以是各种数据类型,比如数值、字符串、布尔值等。PHP的变量名是区分大小写的。变量名只能由字母、下划线和数字组成,并且不能以数字开头。 定义变量 在PHP中,变量的定义以$符号开头,后面跟着变量名和赋值操作符=,再跟着变量的值。 示例代码: $name =…

    PHP 2023年5月23日
    00
  • PHP 获取远程文件内容的函数代码

    下面我将为你详细讲解“PHP 获取远程文件内容的函数代码”的完整攻略。 1. 函数说明 PHP 提供了两个内置函数,用于获取远程文件内容: file_get_contents($url): 用于获取远程文件的内容,返回的是字符串类型。 fopen()和fread(): 用于打开远程文件,并读取其中的内容,也返回字符串类型。 两个函数的使用方式略有不同,在下面…

    PHP 2023年5月26日
    00
  • PHP 实现一种多文件上传的方法

    当需要上传多个文件时,一种常见的做法是使用多个 input type=file 标签分别上传。但使用这种方式,每个文件需要单独发送一个 HTTP 请求,会造成服务器负担过大。所以我们可以采用 PHP 实现多文件上传。 具体实现步骤如下: 在 HTML 表单中设置 enctype 属性 <form action="upload.php&quot…

    PHP 2023年5月26日
    00
  • PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例

    下面是对“PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例”的详细讲解: SplFileInfo和SplFileObject PHP SPL标准库是一个很有用的PHP扩展,它提供了一套数据结构、算法和常用工具集,让开发者可以更便捷地管理和操作数据。其中,SplFileInfo和SplFileObject是SPL标准库中…

    PHP 2023年5月26日
    00
  • php中执行系统命令的方法

    执行系统命令是PHP中常见的一种操作,可以通过PHP代码执行Linux或Windows系统命令。下面是如何在PHP中执行系统命令的攻略: 1. 使用exec函数 exec(string $command[, array &$output[, int &$return_var]])是一个PHP的函数,该函数可以执行系统命令,并将输出作为数组或字…

    PHP 2023年5月23日
    00
  • PHP扩展迁移为PHP7扩展兼容性问题记录

    让我详细讲解一下“PHP扩展迁移为PHP7扩展兼容性问题记录”的完整攻略。 什么是PHP扩展 在开始探讨如何迁移为PHP7扩展兼容性问题记录之前,我们需要先了解一下什么是PHP扩展。 PHP扩展是一个能够通过动态链接库(DLL)的形式被加载进PHP解释器中的一些功能模块。这些模块提供了很多额外的功能,从而扩展了PHP语言的能力。常见的PHP扩展有MySQL扩…

    PHP 2023年5月27日
    00
  • php实现编辑和保存文件的方法

    首先需要明确的是,PHP可以通过打开文件句柄来编辑和保存文件。可以使用PHP的“文件打开/关闭”函数(fopen和fclose)和“读/写”函数(fread和fwrite)来操作文件。 下面是编辑文件的步骤: 首先要打开要编辑的文件,这可以通过使用PHP的fopen函数来实现。fopen函数需要两个参数,第一个参数是要打开的文件名,第二个参数是打开文件的模式…

    PHP 2023年5月23日
    00
  • CTF中的PHP特性函数解析之下篇

    下面是“CTF中的PHP特性函数解析之下篇”的完整使用攻略,包括函数描述、函数分析、函数使用和两个示例说明。 函数描述 在CTF比赛中,PHP特性函数是非常常见的题目类型。这些函数常是PHP中的一些特殊函数,可以用于执行一些非常有趣的操作。在本篇攻略中,我们将介绍一些见的PHP特性函数,包括eval()、assert()、preg_replace()等。 函…

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