foreach의 PHP 참조에 의한 전달
PHP에서 참조에 의한 전달을 사용하면 함수나 메서드가 복사본이 아닌 원래 변수를 수정할 수 있습니다. . foreach 루프에서 사용하는 경우 완전히 이해하지 못하면 예기치 않은 동작이 발생할 수 있습니다.
출력 설명: zero one two two
제공된 코드에서:
$a = array ('zero','one','two', 'three'); foreach ($a as &$v) {} foreach ($a as $v) { echo $v.PHP_EOL; }
첫 번째 foreach 루프는 참조로 전달(&)을 사용하여 배열 요소를 직접 수정합니다. 이는 $v의 값이 변경되면 $a 배열의 해당 요소에 직접 영향을 미친다는 의미입니다.
첫 번째 루프에서는 각 요소의 값이 null로 설정됩니다. 이는 참조별 전달 루프에 값이 할당되지 않으면 배열의 해당 값이 null로 설정되기 때문입니다.
두 번째 루프에서 출력은 각 요소의 현재 값을 표시합니다. 수정된 무효화 배열에서. 처음 세 요소는 초기화 시 할당된 값을 유지합니다. 그러나 네 번째 요소($a[3])는 첫 번째 루프에서 null로 설정되었습니다.
따라서 두 번째 루프의 후속 반복에서는 원래 값(0, 1, 2)을 인쇄합니다. $a[3]에 대한 null 값이 뒤따릅니다. 마지막 반복에서 $v의 값은 여전히 $a[3]의 null 값을 가리키고 있으며, 그 결과 'two'가 null이 되기 전에 마지막으로 할당된 값이었기 때문에 출력으로 반복됩니다.
위 내용은 Pass-by-Reference를 사용하는 PHP의 'foreach'가 예상치 못한 결과를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!