Рассмотрим ниже фрагмент кода, который изменяет (преобразует значения в верхний регистр) значения массива напрямую, передавая их по ссылке.
<?php
$colors = array('red', 'blue', 'green', 'yellow');
foreach ($colors as &$color) {
$color = strtoupper($color);
}
unset($color); /* ensure that following writes to
$color will not modify the last array element */
print_r($colors);
?>
Вывод:
Array
(
[0] => RED
[1] => BLUE
[2] => GREEN
[3] => YELLOW
)
Я вообще не понял приведенный выше код. У меня мало сомнений относительно приведенного выше кода:
- Я вообще не понял это утверждение
$color = strtoupper($color);
из-за циклаforeach
. Почему используется временная переменная$color
, а в функцииstrtoupper()
почему ссылка&$color
не передается, а передается только$color
? - Почему переменная
$color
не установлена? Что это было внутри перед снятием с охраны? - В чем смысл комментария "убедиться, что последующие записи в $color не изменят последний элемент массива", поскольку последний элемент массива, то есть желтый, также изменяется?
Вкратце, пожалуйста, пошагово объясните мне, что происходит в коде из цикла foreach
.
Пожалуйста, кто-нибудь ответьте на мои сомнения.
Примечание. Приведенный выше пример кода взят из главы "Массив" Руководства по PHP.