php - foreach는 원본 배열의 복사본에서 작동하는데 이렇게 작성하면 왜 여전히 원본 배열을 변경할 수 있습니까?
三叔
三叔 2017-06-22 11:53:30
0
4
1088

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

으아악

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

으아악

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

으아악

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

三叔
三叔

모든 응답(4)
给我你的怀抱

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

으아악
習慣沉默

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

phpcn_u1582

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

Ty80

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

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