다음 PHP 코드 세그먼트를 고려하십시오. 여기
$array1 = array(1,20);
$x = &$array1[1];
$array2 = $array1;
$array2[1] = 22;
print_r($array1[1]); // Output is 22
, $array2
는 $array1
에 참조하는 것이 아니라, 어떻게 $array1
의 값을 변경하여 $array2
에서 값을 변경?
다음 PHP 코드 세그먼트를 고려하십시오. 여기
$array1 = array(1,20);
$x = &$array1[1];
$array2 = $array1;
$array2[1] = 22;
print_r($array1[1]); // Output is 22
, $array2
는 $array1
에 참조하는 것이 아니라, 어떻게 $array1
의 값을 변경하여 $array2
에서 값을 변경?
$array2
을 $array1
의 참조로 사용하려면 $x
과 동일한 작업을 수행하십시오. $array2
가 $array1
단지 참조이기 때문에 당신이 $array1
또는 $array2
중 하나에서 변경 이제 아무것도
$array2 = &$array1;
은 두 배열에 표시됩니다.
업데이트
당신이보고 될 수 있습니다 것은 값을 변경하는 방법입니다 만, 여전히 배열의 전체 복사본을 가지고, 그것에 대해 생각. 이것은 객체로 수행 할 수 있습니다.
$obj = new stdClass();
$array1 = array(1, 20);
$array1[1] = $obj;
$array1[1]->color = 22;
$array2 = $array1;
$array2[1]->color = 33;
echo $array1[1]->color; // prints 33
개체는 항상 참조로 복사되는 반면 숫자와 문자열은 그대로 복사됩니다.
이 게시물에 기반한이 게시물에 관심이 있으십니까?이 동작을보고있는 이유에 대해 자세히 설명합니다. http://stackoverflow.com/questions/26081106/assign-by-reference-bug – mschuett