PHP 多维数组
PHP 多维数组
Section titled “PHP 多维数组”到目前为止,我们讨论的数组都是单层的键/值对列表。
然而,PHP 允许你创建包含其他数组的数组,这使得你可以以多维方式组织数据。
这些被称为多维数组(multidimensional arrays)。
理解多维数组
Section titled “理解多维数组”多维数组本质上是一种数组,其中每个元素本身也可以是一个数组。你可以将其想象成一张表格(二维数组)甚至是一个数据立方体(三维数组)。
PHP 支持具有多个嵌套层级的数组。然而,超过两或三层嵌套的数组可能会变得复杂,难以管理和理解。
| | 可以将维度想象为定位某个值所需的坐标。
- 一维数组 需要一个索引(例如,
$myArray[5])。 - 二维数组 需要两个索引(例如,
$myGrid[2][3])。 - 三维数组 需要三个索引(例如,
$myCube[1][4][0])。 | | --- | --- |
PHP 二维数组
Section titled “PHP 二维数组”最常见的多维数组类型是二维数组,它就像一个数组的数组。它非常适合表示通常在表格中找到的数据。
考虑这个汽车库存表格:
| 名称 | 库存 | 已售 |
|---|---|---|
| Volvo | 22 | 18 |
| BMW | 15 | 13 |
| Saab | 5 | 2 |
| Land Rover | 17 | 15 |
我们可以使用现代 PHP 语法将这些数据存储在二维数组中:
// Using modern short array syntax [] $cars = [ [“Volvo”, 22, 18], [“BMW”, 15, 13], [“Saab”, 5, 2], [“Land Rover”, 17, 15] ];
$cars 数组现在包含四个内部数组。要访问特定数据,你需要两个索引:第一个用于行(外部数组索引),第二个用于列(内部数组索引)。
访问元素:
<?php// Modern array syntax$cars = [ ["Volvo", 22, 18], ["BMW", 15, 13], ["Saab", 5, 2], ["Land Rover", 17, 15]];
echo $cars[0][0] . ": 库存: " . $cars[0][1] . ", 已售: " . $cars[0][2] . ".<br>";echo $cars[1][0] . ": 库存: " . $cars[1][1] . ", 已售: " . $cars[1][2] . ".<br>";echo $cars[2][0] . ": 库存: " . $cars[2][1] . ", 已售: " . $cars[2][2] . ".<br>";echo $cars[3][0] . ": 库存: " . $cars[3][1] . ", 已售: " . $cars[3][2] . ".<br>";
// Example Output:// Volvo: In stock: 22, sold: 18.// BMW: In stock: 15, sold: 13.// Saab: In stock: 5, sold: 2.// Land Rover: In stock: 17, sold: 15.?>遍历多维数组:
使用嵌套的 foreach 循环通常是迭代多维数组最易读的方式:
<?php$cars = [ ["Volvo", 22, 18], ["BMW", 15, 13], ["Saab", 5, 2], ["Land Rover", 17, 15]];
echo "<h2>汽车库存详情:</h2>";foreach ($cars as $index => $car) { echo "<p>**汽车 #" . ($index + 1) . "**</p>"; echo "<ul>"; echo "<li>名称:" . $car[0] . "</li>"; echo "<li>库存:" . $car[1] . "</li>"; echo "<li>已售:" . $car[2] . "</li>"; echo "</ul>";}?>你也可以使用关联键(associative keys)来提高可读性,尤其是在处理结构化数据时:
<?php$carData = [ 'Volvo' => ['stock' => 22, 'sold' => 18], 'BMW' => ['stock' => 15, 'sold' => 13], 'Saab' => ['stock' => 5, 'sold' => 2], 'Land Rover' => ['stock' => 17, 'sold' => 15]];
echo "<h2>汽车库存(关联数组):</h2>";foreach ($carData as $name => $data) { echo "<p>**" . htmlspecialchars($name) . "**</p>"; echo "<ul>"; echo "<li>库存:" . htmlspecialchars($data['stock']) . "</li>"; echo "<li>已售:" . htmlspecialchars($data['sold']) . "</li>"; echo "</ul>";}?>多维数组对于存储结构化数据非常有用,例如:
- 配置设置
- 矩阵或网格数据(如电子表格或游戏棋盘)
- 从数据库获取的分组数据(例如用户及其帖子)
- 表示复杂的关系