2014-10-18 2 views
2

이 참조하는 작품 :이 상황에서 배열 요소에 대한 참조가 작동하지 않는 이유는 무엇입니까?

$awesome_array = array (1,2,3); 
$cool_array = array (4,5,6); 

$ref = &$awesome_array; // reference awesome_array 
$awesome_array = $cool_array; 
echo $ref; //produces (4,5,6) as expected 

이 참조도 작동합니다

$array[0] = "original"; 
$element_reference = &$array[0]; // reference $array[0] 
$array[0] = "modified"; 
echo $element_reference; // returns "modified" as expected. 

하지만 전체 배열을 변경하면 배열의 요소를 참조하는 것은 작동하지 않습니다. 이 문제를 어떻게 해결합니까?

$array = array (1,2,3); 
$new_array = array (4,5,6); 

$element_reference = &$array[0]; // reference $array[0] 
$array = $new_array; // CHANGE ENTIRE ARRAY 
echo $element_reference; // returns 1 despite the fact that the entire array changed. I need it to return 4? 

왜 배열이 변경되었으므로 4를 반환하지 않습니까? 4를 반환하도록 요소를 어떻게 참조합니까?

답변

2
기준 배열의 요소에 이다

"은 변수의 인덱스는 $array 불리는"하지. 따라서 이전 배열의 요소에 대한 참조가 새 배열에 적용되지 않습니다.

원본 참조는 원래 배열과 그 안에있는 요소를 여전히 참조합니다. 원래 배열에 더 이상 액세스 할 수없는 경우에도 마찬가지입니다.

$array = array (1,2,3); 
$new_array = array (4,5,6); 

$i = 0; 
echo $array[$i];  // -> 1 

$array = $new_array; // reassign variable with new array 
echo $array[$i];  // -> 4 
:

그냥 사용 정상 인덱스 동작 배열로 확인되는 변수의 특정 인덱스 회부
관련 문제