PHP 更新数组元素
1. PHP 更新数组元素
要更新现有的数组项,您可以引用其对应的数字索引(针对索引数组)或键名(针对关联数组)来进行重新赋值操作。
示例
将数组中的第二个元素从 "BMW" 更改为 "Ford":
$cars = array("Volvo", "BMW", "Toyota");
$cars[1] = "Ford";注意: 数组的第一项索引是 0。
对于关联数组,请使用其对应的键名来更新数据项:
示例
将汽车年份(year)更新为 2024:
$cars = array("brand" => "Ford", "model" => "Mustang", "year" => 1964);
$cars["year"] = 2024;2. 在 Foreach 循环中更新数组项
在 foreach 循环中更改数组项的值有几种不同的技术。
其中一种有效的方法是在变量赋值时插入 & 字符(按引用赋值)。这样做可以确保在循环内部对数组项所做的任何更改,都会直接应用到原始数组本身上。
示例
将数组中所有的元素值都更改为 "Ford":
$cars = array("Volvo", "BMW", "Toyota");
foreach ($cars as &$x) {
$x = "Ford";
}
unset($x);
var_dump($cars);极其重要: 记得在循环结束后添加 unset() 函数!如果省略它,变量 $x 将仍然保持对数组最后一个元素的内存引用。这意味着之后任何对 $x 的意外修改,都会直接改变数组的最后一个元素。
为了演示这一点,请看如果在 foreach 循环之后且没有使用 unset() 的情况下,我们更改 $x 的值会发生什么:
示例
演示忘记使用 unset() 函数的严重后果:
$cars = array("Volvo", "BMW", "Toyota");
foreach ($cars as &$x) {
$x = "Ford";
}
// 此时 $x 依然引用着数组的最后一个元素 ($cars[2])
$x = "ice cream";
var_dump($cars);
// 结果输出中,最后一个元素会变成 "ice cream",而不是预期的 "Ford"