📜  PHP多维数组(1)

📅  最后修改于: 2023-12-03 15:18:34.198000             🧑  作者: Mango

PHP多维数组

在 PHP 中,多维数组指的是一个数组中包含着另一个或多个数组,这些数组也称为嵌套数组。PHP 的多维数组与其他编程语言中的类似,可以包含数十个、数百个或更多层的嵌套数组。

声明和访问多维数组

在 PHP 中声明一个多维数组,只需在数组元素中创建其他数组即可。下面是一个示例:

$fruits = array(
    "apple" => array(
        "color" => "red",
        "taste" => "sweet"
    ),
    "banana" => array(
        "color" => "yellow",
        "taste" => "sweet"
    ),
    "mango" => array(
        "color" => "orange",
        "taste" => "tart"
    )
);

声明一个包含三个水果的数组,每个水果都包含颜色和味道的关联数组。现在,可以通过以下方式访问它们:

echo $fruits["apple"]["color"]; // 输出 "red"
echo $fruits["banana"]["taste"]; // 输出 "sweet"
echo $fruits["mango"]["color"]; // 输出 "orange"
遍历多维数组

使用嵌套循环可以遍历多维数组中的所有元素。下面是一个示例,它使用两个循环遍历嵌套数组中的每个元素:

foreach ($fruits as $key => $value) {
    echo $key . ":<br>";
    foreach ($value as $k => $v) {
        echo "&nbsp;&nbsp;&nbsp;&nbsp;" . $k . " - " . $v . "<br>";
    }
    echo "<br>";
}

输出结果如下:

apple:
    color - red
    taste - sweet

banana:
    color - yellow
    taste - sweet

mango:
    color - orange
    taste - tart
数组排序

使用 PHP 的内置函数 sort(),可以对数组进行排序。多维数组排序稍微复杂一些,因为需要使用回调函数来指定待排序的子数组和排序方式。下面是一个示例,它按颜色对水果进行排序:

function cmp($a, $b) {
    return strcmp($a["color"], $b["color"]);
}

usort($fruits, "cmp");

foreach ($fruits as $key => $value) {
    echo $key . ":<br>";
    foreach ($value as $k => $v) {
        echo "&nbsp;&nbsp;&nbsp;&nbsp;" . $k . " - " . $v . "<br>";
    }
    echo "<br>";
}

输出结果如下:

apple:
    color - red
    taste - sweet

mango:
    color - orange
    taste - tart

banana:
    color - yellow
    taste - sweet
细节问题
  • 如果尝试使用 echo $fruits[0][0]; 访问数组 $fruits 的第一个元素,会得到一个 Undefined offset: 0 错误。这是因为,$fruits 数组的键是字符串,而不是数字。
  • 在多维数组排序时,cmp() 函数必须返回负数、零或正数,否则 usort() 将抛出一个警告。