PHP: изменение элементов массива
Чтобы изменить элемент, сначала нужно его найти: по номеру индекса в индексированном массиве или по имени ключа в ассоциативном.
Пример
Замените «BMW», второй элемент, на «Ford»:
Вывод: PHP-скрипт
<?php
$cars = array("Volvo", "BMW", "Toyota");
$cars[1] = "Ford";
?>
Изменение элемента ассоциативного массива
Примечание: Помните, что индексация начинается с 0, поэтому второй элемент — это $cars[1].
Ассоциативные массивы следуют той же схеме, только с именем ключа:
Пример
Присвойте элементу year значение 2024:
Вывод: PHP-скрипт
<?php
$cars = array("brand" => "Ford", "model" => "Mustang", "year" => 1964);
$cars["year"] = 2024;
?>
Изменение элементов массива в цикле foreach
Изменить значения внутри цикла foreach можно несколькими способами.
Один из них — поставить символ & перед переменной цикла. Тогда переменная хранит ссылку на каждый элемент, а не копию, поэтому всё, что вы делаете с ней внутри цикла, изменяет и исходный массив:
Пример
Присвойте каждому элементу значение «Ford»:
Вывод: PHP-скрипт
<?php
$cars = array("Volvo", "BMW", "Toyota");
foreach ($cars as &$x) {
$x = "Ford";
}
unset($x);
var_dump($cars);
?>
Забытый unset()
Примечание: Всегда вызывайте unset() после завершения цикла. Без этого $x остаётся связанной с последним элементом массива.
В следующем примере этот вызов пропущен, а после цикла переменной $x присваивается новое значение. Посмотрите, что произойдёт с последним элементом:
Пример
Без unset() новое значение $x перезаписывает последний автомобиль:
Вывод: PHP-скрипт
<?php
$cars = array("Volvo", "BMW", "Toyota");
foreach ($cars as &$x) {
$x = "Ford";
}
$x = "ice cream";
var_dump($cars);
?>