일상 개발에서는 PHP의 foreach를 사용하여 배열을 탐색하는 것이 거의 표준입니다. 배열의 키와 값을 매우 편리하게 탐색할 수 있습니다. 그런데 그 성격을 정말 이해하고 계시나요?
PHP foreach는 어떻게 사용하나요?
다음 PHP 중국어 웹사이트에서는 예제를 사용하여 PHP foreach의 사용법과 주의사항을 설명합니다.
예: 다음 배열이 있습니다.
$array = array(1,2,3,4,5);
$array 배열의 각 요소 값에 1을 더해야 합니다
일반적으로 다음 처리 방법인 방법 1을 사용할 수 있습니다.
foreach($array as $key => $value){ $array[$key] = $value+1; }
다음 방법, 두 번째 방법을 사용할 수도 있습니다.
foreach($array as &$value){ $value = $value+1; }
일반적으로 이 두 가지 작성 방법은 문제를 일으키지 않으며 동일한 결과를 생성합니다. 그러나 $value에 새로운 값 8을 할당하는 등 다음 프로그램에서 $value를 사용해야 하는 경우 방법 2의 결과가 이상하게 변경됩니다.
foreach($array as &$value){ $value = $value+1; } $value = 8;
이때 print_r($array)가 출력됩니다.
Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 6 );
를 출력하려고 하지만 실제로는
Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 8 ),
가 출력됩니다. 즉, 마지막 요소는 8이 됩니다.
왜 이런 일이 발생하는 걸까요?
사실 메서드 2의 $value는 참조이며 전역적입니다. foreach가 실행될 때 $value에 대한 참조는 여전히 유효하므로 foreach 외부의 $value에 대한 수정 사항은 $에 영향을 미칩니다. 배열로.
이 문제를 해결하는 방법은 무엇입니까?
방법은 매우 간단합니다. $value는 foreach 외부에서도 여전히 유효하므로 foreach 실행이 완료된 후에 $value를 설정 해제할 수 있습니다. 개선된 코드는 다음과 같습니다.
foreach($array as &$value){ $value = $value+1; } Unset($value); $value = 8;
이제 프로그램은 $array의 마지막 요소를 6으로 출력하며 이는 더 이상 $value 수정의 영향을 받지 않습니다.
위 내용은 PHP foreach를 정말로 이해하고 있나요? 매우 명확한 사용 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!