欢迎访问宙启技术站
智能推送

PHP数组函数:多维数组操作、数组排序、数组遍历、合并和分割

发布时间:2023-06-19 04:29:15

在 PHP 中,数组是一个非常重要的数据类型,常用于存储一组相关数据。由于 PHP 的数组非常灵活,支持多维数组,它们的操作也非常多样。

本文将介绍 PHP 中的数组函数分为多维数组操作、数组排序、数组遍历、合并和分割共 5 大类,主要内容包括:

1. 多维数组操作

1. 多维数组的创建和访问

2. 多维数组的遍历

3. 多维数组的排序

2. 数组排序

1. sort() 和 rsort()

2. asort() 和 arsort()

3. ksort() 和 krsort()

4. usort() 和 uasort()

3. 数组遍历

1. for 循环

2. foreach 循环

3. while 循环

4. 合并和分割数组

1. array_merge()

2. array_merge_recursive()

3. array_combine()

4. array_slice()

## 1. 多维数组操作

### 1.1 多维数组的创建和访问

PHP 的数组可以包含其他数组,这些数组就构成了多维数组。创建多维数组的方式非常简单,只需要在原有数组中嵌套一个或多个数组即可。

// 创建二维数组
$users = [
    ['name' => '张三', 'age' => 20],
    ['name' => '李四', 'age' => 30],
    ['name' => '王五', 'age' => 40]
];

// 创建三维数组
$students = [
    [
        ['name' => '小明', 'age' => 15],
        ['name' => '小红', 'age' => 14]
    ],
    [
        ['name' => '小李', 'age' => 16],
        ['name' => '小张', 'age' => 15]
    ]
];

// 访问多维数组中的元素
echo $users[0]['name'];         // 输出:张三
echo $students[1][0]['name'];   // 输出:小李

### 1.2 多维数组的遍历

PHP 中遍历多维数组的过程非常简单,只需要嵌套多个 foreach 循环即可。如下代码中,我们通过两个嵌套的 foreach 循环遍历了二维数组 $users 中的每一个子数组,获取了里面的元素。

foreach ($users as $user) {
    foreach ($user as $key => $value) {
        echo "{$key}: {$value}
";
    }
    echo "
";
}

输出结果如下:

name: 张三
age: 20

name: 李四
age: 30

name: 王五
age: 40

### 1.3 多维数组的排序

多维数组的排序和一维数组的排序类似,只需要指定排序的字段即可。下面介绍四种常用的方法:

1. array_multisort() 函数:可以对多个数组或多维数组进行排序,支持按照指定维度的键名或键值进行排序。

    $users = [
        ['name' => '张三', 'age' => 20],
        ['name' => '李四', 'age' => 30],
        ['name' => '王五', 'age' => 40]
    ];

    // 按照年龄升序排列
    $ages = array_column($users, 'age'); // 获取每个用户的年龄
    array_multisort($ages, SORT_ASC, $users);
    print_r($users);
    

输出结果如下:

    Array
    (
        [0] => Array
            (
                [name] => 张三
                [age] => 20
            )

        [1] => Array
            (
                [name] => 李四
                [age] => 30
            )

        [2] => Array
            (
                [name] => 王五
                [age] => 40
            )

    )
    

2. usort() 函数:可以按照指定的排序回调函数对数组进行排序,支持多维数组排序。

    $students = [
        ['name' => '小明', 'score' => 80],
        ['name' => '小红', 'score' => 70],
        ['name' => '小李', 'score' => 90]
    ];

    // 按照分数降序排列
    usort($students, function ($a, $b) {
        return $b['score'] - $a['score'];
    });
    print_r($students);
    

输出结果如下:

    Array
    (
        [0] => Array
            (
                [name] => 小李
                [score] => 90
            )

        [1] => Array
            (
                [name] => 小明
                [score] => 80
            )

        [2] => Array
            (
                [name] => 小红
                [score] => 70
            )

    )
    

3. ksort() 函数:按照数组键名对数组进行排序,支持多维数组排序。

    $students = [
        'B' => ['name' => '小明', 'score' => 80],
        'A' => ['name' => '小红', 'score' => 70],
        'C' => ['name' => '小李', 'score' => 90]
    ];

    // 按照键名升序排列
    ksort($students);
    print_r($students);
    

输出结果如下:

    Array
    (
        [A] => Array
            (
                [name] => 小红
                [score] => 70
            )

        [B] => Array
            (
                [name] => 小明
                [score] => 80
            )

        [C] => Array
            (
                [name] => 小李
                [score] => 90
            )

    )
    

4. uasort() 函数:按照指定的关联比较函数对数组进行排序,支持多维数组排序。

    $students = [
        'B' => ['name' => '小明', 'score' => 80],
        'A' => ['name' => '小红', 'score' => 70],
        'C' => ['name' => '小李', 'score' => 90]
    ];

    // 按照分数降序排列
    uasort($students, function ($a, $b) {
        return $b['score'] - $a['score'];
    });
    print_r($students);
    

输出结果如下:

    Array
    (
        [C] => Array
            (
                [name] => 小李
                [score] => 90
            )

        [B] => Array
            (
                [name] => 小明
                [score] => 80
            )

        [A] => Array
            (
                [name] => 小红
                [score] => 70
            )

    )
    

## 2. 数组排序

数组排序是 PHP 数组操作中的一个重要部分,可以对数组元素按照指定的顺序排序,包括升序、降序等。常用的数组排序函数包括:sort() 和 rsort()、asort() 和 arsort()、ksort() 和 krsort()、usort() 和 uasort() 四大类。

### 2.1 sort() 和 rsort()

sort() 和 rsort() 分别表示数组升序和降序排序,两者的 区别是多了一个 r 代表 reverse(反转),表示降序排列。

`php

// 升序排列

$arr = [5, 3, 6, 1, 4, 2];