>  Q&A  >  본문

php - foreach는 원본 배열의 복사본에서 작동하는데 이렇게 작성하면 왜 여전히 원본 배열을 변경할 수 있습니까?

foreach 루프는 원본 배열의 복사본을 사용합니다. 참조 할당 후에 원본 배열이 변경될 수 있는 이유는 무엇입니까?

으아악

이 단락에서는 foreach 작업이 원본 배열의 복사본이고
원본 배열이 동기화 중에 중간에 손실되었음을 증명할 수 있습니다. 원본 배열의 내부 포인터는 한 번만 이동되었으며
후속 작업은 모두 복사본에서 수행됩니다

으아악

참조 할당 사용 시 배열의 참조 상황은 다음과 같습니다

으아악

환자분의 답변에 진심으로 감사드립니다

三叔三叔2675일 전1032

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

  • 给我你的怀抱

    给我你的怀抱2017-06-22 11:55:30

    & 기호를 추가한 후에는 원본 배열의 복사본을 사용하지 않는 것입니다. 앰퍼샌드가 없으면 실제로 원본 배열의 복사본입니다. 앰퍼샌드를 추가하는 것은 포인터와 동일하며 이름만 할당하면 됩니다. 따라서 새 어레이를 변경하면 원래 어레이도 변경됩니다.
    PHP 5부터는 $value 앞에 &를 추가하여 배열의 셀을 쉽게 수정할 수 있습니다. 이 방법은 값을 복사하는 대신 참조로 할당합니다.

    으아악

    회신하다
    0
  • 習慣沉默

    習慣沉默2017-06-22 11:55:30

    주소 전달 기호 &를 추가하면 $aNewValue는 배열의 각 요소에 대한 포인터가 됩니다. 이는 원래 배열을 수정하는 것과 같습니다

    회신하다
    0
  • phpcn_u1582

    phpcn_u15822017-06-22 11:55:30

    php는 쓰기 시 복사됩니다. 복사할 때 값을 가리키기 위해 새 포인터를 사용합니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-06-22 11:55:30

    두 변수가 동일한 주소를 가리키는 참조입니다. 복사본을 작동하면 원본 배열도 수정됩니다.

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