>백엔드 개발 >PHP 튜토리얼 >PHP foreach를 정말로 이해하고 있나요? 매우 명확한 사용 예

PHP foreach를 정말로 이해하고 있나요? 매우 명확한 사용 예

西门大官人
西门大官人원래의
2018-07-13 14:48:392060검색

일상 개발에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.