首页 > 编程笔记 > PHP笔记 阅读:15

PHP二维数组(多维数组)的用法(附带实例)

PHP 程序中,多维数组也是关于数组的数组,即数组成员的值也是数组类型,如下面的代码:
<?php
$arr = [[1,2,3],[4,5,6],[7,8,9]];
foreach($arr as $m0)
{
    foreach($m0 as $m1)
    {
        echo $m1(",");
    }
    echo "<br>";
}
?>
这里定义了一个二维数组,第一维包含三个成员(数组类型),每个成员又包含了三个整数成员。

代码执行结果为:

1,2,3
4,5,6
7,8,9


读取二维数组中某个成员时,需要按维度指定键(索引),如下面的代码。
<?php
$arr = [[1,2,3],[4,5,6],[7,8,9]];
echo $arr[1][1];
?>
这里读取了第一维数组中的第二个成员中的第二个数据,页面会显示 5。

下面了解一些常用的多维数组操作函数。

PHP多维数组操作函数

1) array_column()

array_column() 函数返回数组中指定的一列,函数定义如下:
array_column(array $input, mixed $column_key[, mixed $index_key = null]) : array
其中,参数 $input 为提取数据的数组;参数 $column_key 指定提取的列,如果设置为 null 则返回全部成员。如果 $index_key 指定了列,此列的数据会作为返回数组的成员的键。

下面的代码演示了 array_column() 函数的使用:
<?php
$arr = [[1,2,3],[4,5,6],[7,8,9]];
$arr1 = array_column($arr,1);
print_r($arr1);
?>
执行代码会提取第 2 列(索引从 0 开始)的数据,即 2、5、8,代码执行结果为:
Array
(
    [0] => 2
    [1] => 5
    [2] => 8
)

下面的代码会在 array_column() 函数中使用第三个参数指定提取结果数组中成员的键:
<?php
$arr = [["eartch","地球"],["mars","火星"],["jupiter","木星"]];
$arr1 = array_column($arr,1,0);
print_r($arr1);
?>
执行代码会提取 $arr 数组第 2 列(索引 1)的数据,即行星的中文名,并指定第 1 列(索引 0)的数据作为新数组成员的键,代码执行结果为:
Array
(
    [eartch] => 地球
    [mars] => 火星
    [jupiter] => 木星
)

2) array_chunk()

array_chunk() 函数将一个数组分割成多维数组,函数定义如下:
array_chunk(array $array, int $size[, bool $preserve_keys = false]) : array
参数 $array 为需要分割的数组;参数 $size 指定分割后每个数组的成员数量;参数 $preserve_keys 指定是否保留原数据成员的键,默认是不保留,此时,新的键会使用数值索引。

下面的代码演示了 array_chunk() 函数的应用:
<?php
$arr = range(1,10);
$arr1 = array_chunk($arr,3);
foreach($arr1 as $m)
{
    print_r($m);
    echo "<br>";
}
?>
代码执行结果为:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Array
(
    [0] => 4
    [1] => 5
    [2] => 6
)
Array
(
    [0] => 7
    [1] => 8
    [2] => 9
)
Array
(
    [0] => 10
)

本例中,首先创建了 10 个成员的数组 $arr;然后使用 array_chunk() 函数将其分割,每组最多 3 个成员;分割后,前三个数组有 3 个成员,第四个数组有 1 个成员,共计 10 个成员。

2) array_multisort()

array_multisort() 函数可以对多个数组或多维数组按值排序,函数定义如下:
array_multisort(array &$array1 [, array &$array2 [, mixed $array2_sort_order = SORT_ASC [, mixed $array2_sort_flags = SORT_REGULAR [, ...]]]])
参数以三个为一组,表示一个数组或多维数组及其排序规则。其中,第一个参数指定需要排序的数组对象;第二个参数指定排序方法,默认为升序(SORT_ASC),降序时使用 SORT_DESC 值;第三个参数指定比较方法,包括:
下面的代码演示了 array_multisort() 函数的简单应用:
<?php
$arr = [[4,9,6],[1,8,3],[7,2,5]];
array_multisort($arr[0],$arr[1],$arr[2],SORT_DESC);
foreach($arr as $m)
{
    print_r($m);
    echo "<br>";
}
?>
代码执行结果为:

Array
(
    [0] => 4
    [1] => 6
    [2] => 9
)
Array
(
    [0] => 1
    [1] => 3
    [2] => 8
)
Array
(
    [0] => 7
    [1] => 5
    [2] => 2
)

相关文章