📅  最后修改于: 2023-12-03 15:18:34.198000             🧑  作者: Mango
在 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 " " . $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 " " . $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()
将抛出一个警告。