PHP foreach 참조에 대한 질문
typecho
typecho 2017-07-04 13:45:55
0
3
853

foreach가 &를 사용하여 배열 arr2를 순회한 후, 얻은 결과는 매우 혼란스럽습니다. & 순회 포인터가 어떻게 이동하는지 설명할 수 있는 전문가가 있는지 궁금합니다.
코드는 다음과 같습니다.

으아아아

결과:
0 a
1 s
2 d
0 a a
1 s a
2 s a

두 번째 순회 중에 포인터가 s로 이동했을 때 포인터가 멈춘 이유는 무엇입니까?

typecho
typecho

Following the voice in heart.

모든 응답(3)
迷茫

또는 이렇게 할 수도 있습니다:

으아악

출력:

으아악
phpcn_u1582

한 가지 더

으아악
我想大声告诉你

이유:

  • 첫 번째 foreach中采取了引用传递的方式,第一次循环$v指向$arr2[0]的存储空间,第二次指向> $arr2[1]的存储空间,循环结束则指向$arr2[2] 저장 공간에

  • 두 번째 foreach中采取了值传递的方式,第一次循环给$v赋值了a,即给$arr2[2]赋值了a,第二次同上,$arr2[2]的值变为了$arr2[1]的值,则$arr2变成了[a,s,s]에서는 배열의 마지막 요소가 두 번째 요소의 값이 됩니다

해결책:

  • 처음에는 foreach结束后加一句unset($v);

  • 두 번째foreach循环不用$v변수를 다른 이름으로 변경하세요

참조:

  • PHP에서 배열 값을 변경하기 위해 foreach를 사용할 때의 문제

  • php 배열 클래스 객체 값 전달 참조 전달 차이

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿