값을 함수로 전달할 때 배열이 수정되는 문제가 발생했습니다.값에 의한 PHP 배열 인수가 참조로 배열 항목을 반복 할 때 수정 됨
코드를 검사하고 함수 내부에서 참조로 요소를 가져 오는 배열이 반복됩니다.
루프 후 배열 항목이 참조 된 것으로 표시된다는 사실에 놀랐습니다. 나는 이것이 무엇을 의미하는지 모르지만 내 문제의 근원이되어야합니다.
요점을보기 위해 예를 들어 보겠습니다.
<?php
error_reporting(E_ALL);
ini_set('display_errors' , 1);
$a = array(array(0));
echo '--1--';var_dump($a);
dummy($a);
echo '--4--';var_dump($a);
function dummy($arg) {
foreach($arg as &$item) {
$item[0] = 3;
}
dummy2($arg);
echo '--3--';var_dump($arg);
}
function dummy2($arg) {
foreach($arg as &$item) {
$item[1]=9;
}
echo '--2--';var_dump($arg);
}
?>
I 포인트 3, $의 인수는 하나의 요소가 것이라고 기대하는이 코드 후
하지만이있다, 그래서이 dummy2 기능에 의해 수정되었습니다.
--1--array(1) { [0]=> array(1) { [0]=> int(0) } }
--2--array(1) { [0]=> &array(2) { [0]=> int(3) [1]=> int(9) } }
--3--array(1) { [0]=> &array(2) { [0]=> int(3) [1]=> int(9) } }
--4--array(1) { [0]=> array(1) { [0]=> int(0) } }
왜 어레이 참조로 반복 된 후 & 배열로 표시된 다음과 같이
출력은? 어떻게 피할 수 있습니까?