PHP 简明教程

PHP 多维数组

1. PHP - 多维数组

多维数组是指包含一个或多个内部数组的数组。

PHP 支持二维、三维、四维、五维甚至更多维度的数组。然而,对于大多数人来说,超过三维的数组会变得非常难以管理和维护。

2. PHP - 二维数组

二维数组(Two-dimensional array)本质上就是“包含数组的数组”(而三维数组则是“包含数组的数组的数组”)。

请看下面这个表示库存和销量的数据表:

品牌 (Name)库存 (Stock)销量 (Sold)
Volvo2218
BMW1513
Saab52
Land Rover1715

我们可以将上表中的数据存储到一个二维数组中,如下所示:

$cars = array (
  array("Volvo", 22, 18),
  array("BMW", 15, 13),
  array("Saab", 5, 2),
  array("Land Rover", 17, 15)
);

现在,这个二维 $cars 数组内部包含了四个子数组,它具有两个索引维度:行 (row)列 (column)

要访问 $cars 数组中的具体元素,我们必须同时指向这两个索引(即先指定行,再指定列):

示例

echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".<br>";
echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".<br>";
echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".<br>";
echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".<br>";

数组的“维度”表示您需要使用多少个索引才能选定某个具体的元素:

  • 对于一维数组,您只需一个索引来选取元素。
  • 对于二维数组,您需要两个索引来选取元素。
  • 对于三维数组,您需要三个索引来选取元素。

3. PHP - 循环遍历多维数组

要循环遍历一个多维数组,请使用嵌套的 for 循环或 foreach 循环。

下面这个例子中,我们在一个 for 循环内部嵌套了另一个 for 循环,以此来获取 $cars 数组中的所有元素(我们依然需要指向两个维度的索引):

示例

使用嵌套 for 循环:

for ($row = 0; $row < 4; $row++) {
  echo "<p><b>Row number $row</b></p>";
  echo "<ul>";
  for ($col = 0; $col < 3; $col++) {
    echo "<li>".$cars[$row][$col]."</li>";
  }
  echo "</ul>";
}

下面这个例子中,我们在一个 foreach 循环内部嵌套了另一个 foreach 循环来获取 $cars 数组的元素。
并且,我们将遍历出的结果放入了一个 HTML 表格(<table>)中:

示例

使用嵌套 foreach 循环生成 HTML 表格:

echo "<table>";
echo "<tr><th>Brand</th><th>Stock</th><th>Sold</th></tr>";

foreach ($cars as $row) {
  echo "<tr>";
  foreach ($row as $cell) {
    echo "<td>" . $cell . "</td>";
  }
  echo "</tr>";
}
echo "</table>";