'foreach' 루프의 참조 동작: 배열 수정 이해
PHP에서 'foreach' 루프 내에서 참조를 사용하면 예상치 못한 결과가 발생할 수 있습니다. 배열 수정. 이 동작은 다음 코드에서 강조됩니다.
$a = array('a', 'b', 'c', 'd'); foreach ($a as &$v) { } foreach ($a as $v) { } print_r($a);
이 코드가 생성하는 출력은 예상치 못한 결과입니다.
Array ( [0] => a [1] => b [2] => c [3] => c )
단계별 설명
이 동작을 이해하려면 'foreach'의 각 반복 중에 발생하는 변경 사항을 추적하는 것이 중요합니다. 루프:
첫 번째 'foreach' 루프(참조 반복)가 완료되면 $v는 여전히 $a[3] ('d')에 대한 참조를 보유합니다.
따라서 두 번째 'foreach' 루프(값 반복) 후에 배열 $a 'c'가 두 번 나타나는 것으로 수정되었습니다.
문제 해결
이 예상치 못한 동작을 방지하려면 각 반복 후에 참조 설정을 해제하는 것이 좋습니다.
$a = array('a', 'b', 'c', 'd'); foreach ($a as &$v) { } unset($v); foreach ($a as $v) { } print_r($a);
이렇게 하면 예상되는 결과가 나옵니다.
Array ( [0] => a [1] => b [2] => c [3] => d )
위 내용은 PHP의 'foreach' 루프에서 참조를 사용하면 예기치 않은 배열 수정이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!