이 이이 가능한 중복 :
Strange behavior Of foreach
Strange behaviour after loop by reference - Is this a PHP bug?포인터
이 사람이 나를 설명 할 수있는 이유 코드 :
<pre>
<?php
$a = array('page', 'email', 'comment');
$b = array('page' => 'realpage', 'email' => 'reaLmail', 'comment' => 'c');
$c = array();
foreach ($a as &$item) {
if (isset($b[$item])) {
$item = $b[$item];
}
}
foreach ($a as $item) {
$c[] = $item;
}
print_r($c);
출력
Array
(
[0] => realpage
[1] => reaLmail
[2] => reaLmail
)
??? 왜 2 루프 (A)는 (위해서 var_dump 의해) 전에
array(3) {
[0]=>
string(8) "realpage"
[1]=>
string(8) "reaLmail"
[2]=>
&string(1) "c"
}
그러나 첫 번째 반복에서, A는
array(3) {
[0]=>
string(8) "realpage"
[1]=>
string(8) "reaLmail"
[2]=>
&string(8) "realpage"
}
과 두 번째 및 세 번째 [1], [2] 인덱스가 동일한 "reaLmail에
", [2]는 포인터입니까? 감사합니다.
이 BTW, (적어도 유저 랜드에서) PHP에는 포인터가없는'&'의 기준입니다 연산자 (C++과 비슷하지만 같은 것은 아닙니다). –
만약 첫 번째'foreach' 후에'var_dump ($ a);'를 쓰면 array의 마지막 항목이 실제로 poiner라는 것을 볼 수 있습니다. 그러므로 마지막'$ c [] = $ item;'은 작동하지 않고'$ item'은 이전 반복에서 동일하게 유지됩니다. –