2011-03-05 6 views
7

사전과 같은 PHP 비 연관 배열을 사용하고 큰 키를 추가하려면 PHP가 얼마만큼의 메모리를 할당합니까?거대한 숫자 키를 추가 할 때 PHP 배열의 메모리 사용

$myArray = Array(); 
$myArray[6000] = "string linked to ID 6000"; 
$myArray[7891] = "another key-value pair"; 

PHP는 사용되지 않은 키 0-5999 및 6001-7890에도 메모리를 할당합니까?

답변

13

아니요, PHP는 C 스타일 배열처럼 이것을 구현하지 않습니다. Php 배열은 연관 컨테이너이며 php article on arrays 상태입니다.

PHP의 배열은 실제로 으로 정렬되어 있습니다. 지도는 키에 값을 연결하는 유형입니다.

주문이 보존되므로 어레이는 일종의 이진 검색 트리 일 가능성이 큽니다. 이진 검색 트리에 익숙하지 않은 독자는 좋은 데이터 구조 도서를 선택하여 자세한 내용을 확인하거나 this wikipedia article을 확인하십시오. 위의 예제는 키 6000의 데이터와 키 7891의 두 노드가있는 2 진 검색 트리를 생성합니다.

+10

json_encode()를 통해이를 전달하면 0-5999 키가 생성됩니다. json은 PHP의 희소 배열을 좋아하지 않습니다. –

+0

'$ myArray [strtotime ($ date)] = ...'이 실행되면 메모리가 실행됩니다. –

+0

아니요, whupps. 엄청난 숫자의 문자열을 색인하려고했습니다. 그럴거야. 어리석은 동적 타이핑. –

2

인덱스 0-5999에 메모리를 할당하지 않습니다.

관련 문제