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

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

Barbara Streisand
Barbara Streisand원래의
2024-12-17 12:42:25779검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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