찾다

 >  Q&A  >  본문

PHP foreach 참조에 대한 질문

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

으아아아

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

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

typechotypecho2702일 전845

모든 응답(3)나는 대답할 것이다

  • 迷茫

    迷茫2017-07-04 13:47:55

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

    으아악

    출력:

    으아악

    회신하다
    0
  • phpcn_u1582

    phpcn_u15822017-07-04 13:47:55

    한 가지 더

    으아악

    회신하다
    0
  • 我想大声告诉你

    我想大声告诉你2017-07-04 13:47:55

    이유:

    • 첫 번째 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 배열 클래스 객체 값 전달 참조 전달 차이

    회신하다
    0
  • 취소회신하다