2012-07-21 5 views
0

등 :배열 요소가 실제로 다른 배열의 요소를 참조 할 수 있습니까?

$arr1['X'] = 5; 
$arr2['Y'] = &$arr1['X']; 
$arr1['X'] = 7; 

print $arr2['Y']; // prints 7 

나는이 시도하고 난 (~ 1000 개 항목 내 배열이) 어떤 메모리 사용량 감소를 볼 수 없습니다, 그래서 PHP 배열 또는 무언가의 복제를하게 됐을까? 그래서 기술적으로는 참으로 참고가 아닙니다. 그렇습니까?

내 배열에 숫자 대신 하위 배열 (키 => 값 쌍)이 있습니다. 나는 그들에게 개체를 만들 경우, 메모리 사용량이 낮은 것으로 나타났습니다 (~ 2메가바이트 이하)

+0

메모리 사용량이 줄어들 것으로 예상되는 예에서는 명확하지 않습니다. 좀 더 자세히 설명해 주시겠습니까? – mellamokb

+0

글쎄, 나는 변수가 다른 변수를 참조 할 때, 그 값을 평상시 값으로 사용하는 대신 사용 된 메모리가 감소해야한다고 생각했다 : P – Alex

+3

그러나 참조는 여전히 메모리를 차지한다. 실제 값을 저장하는 대신, 이제는 가리키는 값의 메모리 주소를 저장해야합니다. 실제로는 실제 값보다 저장할 메모리가 더 많을 수도 있습니다. – mellamokb

답변

1

당신이 실행하는 경우 :

$arr2 = &$arr1; 

당신은 전체 배열을 참조하고, 적은 메모리를 사용한다. 예를 들어 XDEBUG으로 측정 할 수 있습니다. 사용중인 것으로 가정합니다.

+0

사실 저는 memory_get_usage를 사용하고 있습니다 – Alex

+0

http://xdebug.org/docs/execution_trace, http://www.vim.org로 출력 파일을 열면 메모리 사용량을 확인할 수있는 좋은 방법입니다. a lot =)'show_mem_delta = 1' 설정 파라미터를 확인하십시오. – Niloct

관련 문제