Я столкнулся с чем-то странным, надеюсь кто-то может объяснить, что происходит. Я варил вниз к следующему случаю для воспроизведения на PHP версии 5.3.10-1ubuntu3.21:PHP массив по ссылке сохраняется
$lines = array("foo" => "bar");
foreach ($lines as &$line) { } // Trouble-causer
$temp = $lines;
foreach ($lines as $key => $line) {
$lines[$key] = "test";
}
print_r($lines);
print_r($temp);
Ожидаемый результат этого, так как я не работаю на $temp
, является
Array
(
[foo] => test
)
Array
(
[foo] => bar
)
Но фактический результат
Array
(
[foo] => test
)
Array
(
[foo] => test
)
Если удалить строку, отмеченную Trouble-causer
он работает, как ожидалось. Каким-то образом тот факт, что я включил $lines
пунктов по ссылке, сохраняется в следующей итерации. Этого можно ожидать?
ваш фактический результат irrelevent, так как у вас есть те же самые ключевые в 2 раза! –