插件窝 干货文章 php 怎么定义二维数组

php 怎么定义二维数组

二维 数组 array 使用 637    来源:    2025-03-19

在 PHP 中,二维数组是一个数组的数组,即数组中的每个元素也是一个数组。你可以通过多种方式定义二维数组。以下是几种常见的方法:

1. 直接定义二维数组

你可以直接在代码中定义一个二维数组:

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

2. 使用 array() 函数定义二维数组

你也可以使用 array() 函数来定义二维数组:

$array = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9)
);

3. 动态添加元素到二维数组

你可以先定义一个空数组,然后动态地向其中添加元素:

$array = [];

$array[0] = [1, 2, 3];
$array[1] = [4, 5, 6];
$array[2] = [7, 8, 9];

4. 使用循环生成二维数组

你也可以使用循环来生成二维数组:

$array = [];

for ($i = 0; $i < 3; $i++) {
    for ($j = 0; $j < 3; $j++) {
        $array[$i][$j] = $i * 3 + $j + 1;
    }
}

5. 访问二维数组中的元素

你可以通过索引访问二维数组中的元素:

echo $array[0][1]; // 输出 2
echo $array[2][2]; // 输出 9

6. 遍历二维数组

你可以使用嵌套的 foreach 循环来遍历二维数组:

foreach ($array as $row) {
    foreach ($row as $value) {
        echo $value . " ";
    }
    echo "\n";
}

7. 使用 array_push() 添加元素

你还可以使用 array_push() 函数向二维数组中添加元素:

$array = [];

array_push($array, [1, 2, 3]);
array_push($array, [4, 5, 6]);
array_push($array, [7, 8, 9]);

8. 使用 array_fill() 初始化二维数组

你可以使用 array_fill() 函数来初始化一个二维数组:

$array = array_fill(0, 3, array_fill(0, 3, 0));

这将创建一个 3x3 的二维数组,所有元素初始值为 0。

9. 使用 array_map() 处理二维数组

你可以使用 array_map() 函数对二维数组中的每个元素进行处理:

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

$array = array_map(function($row) {
    return array_map(function($value) {
        return $value * 2;
    }, $row);
}, $array);

这将使二维数组中的每个元素都乘以 2。

10. 使用 array_column() 提取二维数组中的某一列

你可以使用 array_column() 函数提取二维数组中的某一列:

$array = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
    ['id' => 3, 'name' => 'Charlie']
];

$names = array_column($array, 'name');

这将提取出 name 列,结果为 ['Alice', 'Bob', 'Charlie']

11. 使用 array_walk() 遍历二维数组

你可以使用 array_walk() 函数遍历二维数组:

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

array_walk($array, function(&$row) {
    array_walk($row, function(&$value) {
        $value *= 2;
    });
});

这将使二维数组中的每个元素都乘以 2。

12. 使用 array_reduce() 对二维数组进行归约

你可以使用 array_reduce() 函数对二维数组进行归约操作:

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

$sum = array_reduce($array, function($carry, $row) {
    return $carry + array_sum($row);
}, 0);

这将计算二维数组中所有元素的总和。

13. 使用 array_filter() 过滤二维数组

你可以使用 array_filter() 函数过滤二维数组:

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

$filtered = array_filter($array, function($row) {
    return array_sum($row) > 10;
});

这将过滤出总和大于 10 的行。

14. 使用 array_merge() 合并二维数组

你可以使用 array_merge() 函数合并两个二维数组:

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

$array2 = [
    [7, 8, 9],
    [10, 11, 12]
];

$merged = array_merge($array1, $array2);

这将合并两个二维数组。

15. 使用 array_slice() 截取二维数组

你可以使用 array_slice() 函数截取二维数组的一部分:

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

$slice = array_slice($array, 1, 2);

这将截取从索引 1 开始的 2 行。

16. 使用 array_chunk() 将二维数组分块

你可以使用 array_chunk() 函数将二维数组分块:

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

$chunks = array_chunk($array, 2);

这将把二维数组分成每块 2 行的数组。

17. 使用 array_keys() 获取二维数组的键

你可以使用 array_keys() 函数获取二维数组的键:

$array = [
    'a' => [1, 2, 3],
    'b' => [4, 5, 6],
    'c' => [7, 8, 9]
];

$keys = array_keys($array);

这将获取二维数组的键 ['a', 'b', 'c']

18. 使用 array_values() 获取二维数组的值

你可以使用 array_values() 函数获取二维数组的值:

$array = [
    'a' => [1, 2, 3],
    'b' => [4, 5, 6],
    'c' => [7, 8, 9]
];

$values = array_values($array);

这将获取二维数组的值 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

19. 使用 array_replace() 替换二维数组

你可以使用 array_replace() 函数替换二维数组中的元素:

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

$array2 = [
    [7, 8, 9],
    [10, 11, 12]
];

$replaced = array_replace($array1, $array2);

这将用 array2 替换 array1 中的元素。

20. 使用 array_intersect() 获取二维数组的交集

你可以使用 array_intersect() 函数获取两个二维数组的交集:

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

$array2 = [
    [1, 2, 3],
    [7, 8, 9]
];

$intersect = array_intersect($array1, $array2);

这将获取两个二维数组的交集 [[1, 2, 3]]

21. 使用 array_diff() 获取二维数组的差集

你可以使用 array_diff() 函数获取两个二维数组的差集:

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

$array2 = [
    [1, 2, 3],
    [7, 8, 9]
];

$diff = array_diff($array1, $array2);

这将获取两个二维数组的差集 [[4, 5, 6]]

22. 使用 array_unique() 去除二维数组中的重复元素

你可以使用 array_unique() 函数去除二维数组中的重复元素:

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

$unique = array_unique($array, SORT_REGULAR);

这将去除二维数组中的重复元素 [[1, 2, 3], [4, 5, 6]]

23. 使用 array_flip() 交换二维数组的键和值

你可以使用 array_flip() 函数交换二维数组的键和值:

$array = [
    'a' => [1, 2, 3],
    'b' => [4, 5, 6],
    'c' => [7, 8, 9]
];

$flipped = array_flip($array);

这将交换二维数组的键和值。

24. 使用 array_reverse() 反转二维数组

你可以使用 array_reverse() 函数反转二维数组:

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

$reversed = array_reverse($array);

这将反转二维数组。

25. 使用 array_shift() 移除二维数组的第一个元素

你可以使用 array_shift() 函数移除二维数组的第一个元素:

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

$first = array_shift($array);

这将移除二维数组的第一个元素 [1, 2, 3]

26. 使用 array_pop() 移除二维数组的最后一个元素

你可以使用 array_pop() 函数移除二维数组的最后一个元素:

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

$last = array_pop($array);

这将移除二维数组的最后一个元素 [7, 8, 9]

27. 使用 array_unshift() 在二维数组的开头插入元素

你可以使用 array_unshift() 函数在二维数组的开头插入元素:

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

array_unshift($array, [0, 0, 0]);

这将在二维数组的开头插入元素 [0, 0, 0]

28. 使用 array_push() 在二维数组的末尾插入元素

你可以使用 array_push() 函数在二维数组的末尾插入元素:

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

array_push($array, [10, 11, 12]);

这将在二维数组的末尾插入元素 [10, 11, 12]

29. 使用 array_splice() 替换二维数组中的元素

你可以使用 array_splice() 函数替换二维数组中的元素:

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

array_splice($array, 1, 1, [[10, 11, 12]]);

这将替换二维数组中的第二个元素 [4, 5, 6][10, 11, 12]

30. 使用 array_combine() 将两个数组合并为一个二维数组

你可以使用 array_combine() 函数将两个数组合并为一个二维数组:

$keys = ['a', 'b', 'c'];
$values = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

$combined = array_combine($keys, $values);

这将合并两个数组为一个二维数组 ['a' => [1, 2, 3], 'b' => [4, 5, 6], 'c' => [7, 8, 9]]

31. 使用 array_fill_keys() 创建一个键为指定值的二维数组

你可以使用 array_fill_keys() 函数创建一个键为指定值的二维数组:

$keys = ['a', 'b', 'c'];
$value = [1, 2, 3];

$filled = array_fill_keys($keys, $value);

这将创建一个二维数组 ['a' => [1, 2, 3], 'b' => [1, 2, 3], 'c' => [1, 2, 3]]

32. 使用 array_map() 对二维数组的每个元素应用回调函数

你可以使用 array_map() 函数对二维数组的每个元素应用回调函数:

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

$mapped = array_map(function($row) {
    return array_map(function($value) {
        return $value * 2;
    }, $row);
}, $array);

这将使二维数组中的每个元素都乘以 2。

33. 使用 array_walk_recursive() 递归遍历二维数组

你可以使用 array_walk_recursive() 函数递归遍历二维数组:

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

array_walk_recursive($array, function(&$value) {
    $value *= 2;
});

这将使二维数组中的每个元素都乘以 2。

34. 使用 array_udiff() 使用自定义函数比较二维数组的差集

你可以使用 array_udiff() 函数使用自定义函数比较二维数组的差集:

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

$array2 = [
    [1, 2, 3],
    [7, 8, 9]
];

$diff = array_udiff($array1, $array2, function($a, $b) {
    return array_sum($a) - array_sum($b);
});

这将使用自定义函数比较二维数组的差集。

35. 使用 array_uintersect() 使用自定义函数比较二维数组的交集

你可以使用 array_uintersect() 函数使用自定义函数比较二维数组的交集:

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

$array2 = [
    [1, 2, 3],
    [7, 8, 9]
];

$intersect = array_uintersect($array1, $array2, function($a, $b) {
    return array_sum($a) - array_sum($b);
});

这将使用自定义函数比较二维数组的交集。

36. 使用 array_multisort() 对二维数组进行排序

你可以使用 array_multisort() 函数对二维数组进行排序:

$array = [
    ['name' => 'Alice', 'age' => 25],
    ['name' => 'Bob', 'age' => 30],
    ['name' => 'Charlie', 'age' => 20]
];

array_multisort(array_column($array, 'age'), SORT_ASC, $array);

这将根据 age 列对二维数组进行升序排序。

37. 使用 uasort() 使用自定义函数对二维数组进行排序

你可以使用 uasort() 函数使用自定义函数对二维数组进行排序:

$array = [
    ['name' => 'Alice', 'age' => 25],
    ['name' => 'Bob', 'age' => 30],
    ['name' => 'Charlie', 'age' => 20]
];

uasort($array, function($a, $b) {
    return $a['age'] - $b['age'];
});

这将根据 age 列对二维数组进行升序排序。

38. 使用 uksort() 使用自定义函数对二维数组的键进行排序

你可以使用 uksort() 函数使用自定义函数对二维数组的键进行排序:

$array = [
    'c' => [1, 2, 3],
    'a' => [4, 5, 6],
    'b' => [7, 8, 9]
];

uksort($array, function($a, $b) {
    return strcmp($a, $b);
});

这将根据键