Foreach 내부에서 참조를 사용할 때 요소 값이 배열에서 반복되는 이유는 무엇입니까?
다음 PHP 코드를 고려하세요.
$a = array('a', 'b', 'c', 'd'); foreach ($a as &$v) { } foreach ($a as $v) { } print_r($a);
놀랍게도 출력에서는 마지막 요소의 값이 다른 요소의 값을 덮어썼다는 것을 보여줍니다. in:
Array ( [0] => a [1] => b [2] => c [3] => c )
이상한 점 설명
이 동작은 첫 번째 foreach 루프에서 참조(&) 사용에서 비롯된 PHP의 문서화된 측면입니다. .
첫 번째 루프 동안 배열의 각 요소는 참조로 $v에 할당됩니다. $v가 수정되면 원래 배열에서 참조된 요소가 변경됩니다. 따라서 $v가 후속 루프에서 재할당되면 참조에 해당하는 배열 요소가 실수로 변경됩니다.
해결책
이 문제를 방지하려면 명시적으로 설정을 해제하세요. 두 번째 foreach 루프 앞의 마지막 요소에 대한 참조:
foreach ($a as &$v) { } unset($v); foreach ($a as $v) { } print_r($a);
이해 단계별 프로세스
코드에서 발생하는 일에 대한 단계별 설명은 다음과 같습니다.
첫 번째 foreach 루프:
두 번째 foreach 루프:
위 내용은 PHP Foreach 루프에서 참조를 사용하면 요소 값이 반복되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!