[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа PHP кода
SuccessLord
Имеется код:

$arr = array(1, 2, 3, 4);
foreach ($arr as &$i){
$i = $i*2;
}
for ($i=0; $i<4; $i++)
$arr[$i] += 1;

echo implode(', ', $arr);


Не могу понять, почему в результате выдает: 3, 5, 7, 5

Сначала цикл foreach преобразовал массив и он стал таким:
Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 8
)
Затем в цикле for значение 2 (0-й элемент массива) становится 3.
Аналогично 4 становится 5.
6 становится 7 (в этот раз $i = 2)
А вот что происходит в следующий раз, когда $i=3, - пока для меня загадка.
Если в цикл внедрить echo, чтобы видеть что происходит:
echo "<p>Переменная 'i' = $i\n";
echo "$arr[$i] Это До\n";
$arr[$i] +=1;
echo "$arr[$i] Это После</p>";

То выдает вот что:
Переменная 'i' = 0
2 Это До
3 Это После

Переменная 'i' = 1
4 Это До
5 Это После

Переменная 'i' = 2
6 Это До
7 Это После

Переменная 'i' = 3
3 Это До
Это После
Почему, когда $i=3, то последний элемент массива, который в этот момент должен быть равен 8, он видит как значение 3?
И значение этого элемента после выполнения кода
$arr[$i] += 1;
почему-то не выдает.
Хотя, если в конце
print_r($arr);
, то видим:
Array
(
[0] => 3
[1] => 5
[2] => 7
[3] => 5
)
Что происходит с последним элементом на четвертой итерации?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.