PHP에서 어레이의 최대 키 크기는 얼마입니까?
연관 배열을 생성하고 있으며 키 값은 1..n개의 열로 구성된 문자열입니다.
키를 돌려받을 수 있는 최대 길이가 있나요?만약 그렇다면, 나는 멈추고 다른 방법으로 할 것이다.
스크립트의 메모리 제한만으로 제한되는 것 같습니다.
간단한 테스트를 통해 128MB의 키를 얻을 수 있었습니다.
ini_set('memory_limit', '1024M');
$key = str_repeat('x', 1024 * 1024 * 128);
$foo = array($key => $key);
echo strlen(key($foo)) . "<br>";
echo strlen($foo[$key]) . "<br>";
PHP의 문자열 크기에는 실질적인 제한이 없습니다.설명서에 따르면:
주의: 문자열이 매우 커지는 것은 문제 없습니다.PHP는 문자열 크기에 경계를 두지 않습니다. 유일한 제한은 PHP가 실행 중인 컴퓨터의 사용 가능한 메모리입니다.
이는 배열에서 문자열을 키로 사용하는 경우에도 적용되는 것으로 추정할 수 있지만, PHP가 검색을 처리하는 방법에 따라 문자열이 커짐에 따라 성능 저하가 발생할 수 있습니다.
zend_hash.h에서는,zend_inline_hash_func()
PHP에서 키 문자열을 해시하는 방법을 보여 줄 수 있는 메서드이므로 8자 미만의 문자열 길이를 사용하는 것이 성능에 더 좋습니다.
static inline ulong zend_inline_hash_func(char *arKey, uint nKeyLength) {
register ulong hash = 5381;
/* variant with the hash unrolled eight times */
for (; nKeyLength >= 8; nKeyLength -= 8) {
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
}
switch (nKeyLength) {
case 7: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */
case 6: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */
case 5: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */
case 4: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */
case 3: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */
case 2: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */
case 1: hash = ((hash << 5) + hash) + *arKey++; break;
case 0: break; EMPTY_SWITCH_DEFAULT_CASE()
}
return hash;
}
언급URL : https://stackoverflow.com/questions/467149/what-is-the-max-key-size-for-an-array-in-php
'source' 카테고리의 다른 글
PHP Composer가 왜 이렇게 느려? (0) | 2022.10.25 |
---|---|
django Import 오류 - core.management라는 이름의 모듈이 없습니다. (0) | 2022.10.25 |
변수별 JavaScript 개체 키 설정 (0) | 2022.10.25 |
구체화: 드롭다운에서 null의 속성 'tabIndex'를 설정할 수 없습니다._make Dropdown Focusable(초점 설정 가능) (0) | 2022.10.25 |
org.w3c.dom을 예쁘게 인쇄하는 가장 빠른 방법은 무엇입니까?stdout할 문서? (0) | 2022.10.25 |