> 백엔드 개발 > PHP 튜토리얼 > `foreach` 루프에서 PHP의 참조에 의한 전달이 배열 요소 수정에 어떤 영향을 줍니까?

`foreach` 루프에서 PHP의 참조에 의한 전달이 배열 요소 수정에 어떤 영향을 줍니까?

Barbara Streisand
풀어 주다: 2024-12-17 12:42:25
원래의
771명이 탐색했습니다.

How Does PHP's Pass by Reference in `foreach` Loops Affect Array Element Modification?

foreach의 PHP 참조로 전달

참조로 전달 이해

PHP에는 두 개의 변수가 있습니다. 유형: 일반 변수 및 참조 변수. 변수의 참조를 다른 변수에 할당하면 참조 변수가 생성됩니다. 변수는 참조된 변수의 별칭이 됩니다.

Foreach 루프에서 참조로 전달

foreach 루프에서 구문 foreach($a as &$v) 각 배열 요소에 대한 참조를 변수 $v에 전달합니다. 즉, 루프 내부에서 $v를 변경하면 원래 배열 요소도 수정됩니다.

코드 조각 설명

$a = array ('zero','one','two', 'three');

foreach ($a as &$v) {

}

foreach ($a as $v) {
  echo $v.PHP_EOL;
}
로그인 후 복사

이 코드에서:

  1. $a 배열에는 'zero', 'one', 'two' 및 'two'의 네 가지 요소가 포함되어 있습니다. '3'.
  2. 첫 번째 foreach 루프는 각 요소를 반복하고 각 요소에 대한 참조를 $v에 전달합니다.
  3. 이 루프 내에서 $v는 변경되지 않으므로 배열 요소는 변경되지 않은 상태로 유지됩니다.
  4. 두 번째 foreach 루프는 각 요소를 다시 반복하지만 이번에는 일반 변수 $v가 각 요소의 값을 보유합니다. element.
  5. 출력은 다음과 같습니다.
zero
one
two
two
로그인 후 복사

출력 이유

첫 번째 foreach 루프 후 요소 $ a[3]은 $v에서 참조되므로 참조 변수가 됩니다. 따라서 후속 반복에서 $v에 새 값이 할당되면 $a[3]도 수정됩니다.

$a[3]는 이제 참조 변수이므로 두 번째 foreach 루프에서 해당 값을 변경합니다. 루프의 다른 모든 반복에 영향을 미칩니다. 따라서 마지막 반복에서는 '3' 대신 '2'가 인쇄됩니다.

위 내용은 `foreach` 루프에서 PHP의 참조에 의한 전달이 배열 요소 수정에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿