> 백엔드 개발 > PHP 튜토리얼 > PHP에서 해시로 구현된 huaidanshizenyanglianchengde 배열

PHP에서 해시로 구현된 huaidanshizenyanglianchengde 배열

WBOY
풀어 주다: 2016-07-29 08:46:10
원래의
1160명이 탐색했습니다.

배열은 PHP에서 가장 많이 사용되는 것입니다. 그렇다면 배열은 어떻게 구현됩니까? PHP에서 배열은 해시 테이블을 통해 구현되는데, 해시 충돌 문제를 해결하기 위해 체이닝 방식을 사용합니다. 이렇게 배열 요소를 찾는 복잡도는 최악의 경우 O(N), 최상의 경우 1입니다. .
그리고 그 계산 방법은 문자열 해시 값을 참고용으로 추출합니다.

코드 복사 코드는 다음과 같습니다. :


정적 인라인 ulong zend_inline_hash_func(const char *arKey, uint nKeyLength)
{
register ulong hash = 5381;
/* 해시가 8번 펼쳐진 변형 */
for (; nKeyLength >= 8; nKeyLength -= 8) { ​ ​ ​ ​ ​ ​ ​ //이 step=8 방법인 이유 ?
해시 = ((해시 해시 = ((해시 해시 = ((해시
5) 해시) *arKey ;
hash = ((hash hash = ((hash hash = ((hash hash = ((hash }
switch (nKeyLength) {
사례 7: 해시 = ((해시       밖으로 밖으로 밖으로 밖으로 밖으로 밖으로 밖으로 통과해서 밖으로 통과해서 ‐ to ‐‐ ‐‐ r‐ 및 ((hash 사례 4: hash = ((hash 사례 3: hash = ((hash 사례 2: hash = ((hash < < 5) 해시 ) *arKey ; /* fallthrough... */                                                     
}
해시 값 반환
}


ps: 아직 다음 함수에 대해 두 가지 불분명한 점:
해시를 5381로 설정한 이유는 무엇입니까?
이것은 효율성을 위한 step=8 루프 방식인가요?
위 내용은 huaidanshizenyanglianchengde의 내용을 포함하여 huaidanshizenyanglianchengde PHP에서 해시로 구현한 배열을 소개한 내용입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿