> 백엔드 개발 > PHP 튜토리얼 > PHP를 통해 배열 요소를 검색하여 효율성을 높이는 방법

PHP를 통해 배열 요소를 검색하여 효율성을 높이는 방법

jacklove
풀어 주다: 2023-03-31 06:58:02
원래의
2535명이 탐색했습니다.

1.php in_array 메소드 설명

php는 배열 요소가 존재하는지 알아냅니다. 일반적으로 in_array 메소드를 사용합니다.

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
로그인 후 복사

매개변수 설명:
needle
검색할 값입니다. needle이 문자열인 경우 비교 시 대/소문자를 구분합니다.

haystack
비교에 사용되는 배열

strict
세 번째 매개변수 strict의 값이 TRUE이면 in_array() 함수는 바늘 종류가 haystack에 있는 것과 같은지 여부도 확인합니다

반환 값
바늘이 발견되면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다.

2. in_array에서 요소를 찾는 효율성

비교된 배열 건초 더미가 크면 in_array의 효율성이 매우 낮습니다.

예: in_array를 사용하여 100,000개의 요소가 있는 배열을 1000번 비교합니다

<?php$arr = array();// 创建10万个元素的数组for($i=0; $i<100000; $i++){    $arr[] = $i;
}// 记录开始时间$starttime = getMicrotime();// 随机创建1000个数字使用in_array比较for($j=0; $j<1000; $j++){    $str = mt_rand(1,99999);
    in_array($str, $arr);
}// 记录结束时间$endtime = getMicrotime();echo &#39;run time:&#39;.(float)(($endtime-$starttime)*1000).&#39;ms<br>';/**
 * 获取microtime
 * @return float
 */function getMicrotime(){
    list($usec, $sec) = explode(' ', microtime());    return (float)$usec + (float)$sec;
}?>
로그인 후 복사

run 시간: 2003.6449432373ms

요소가 존재하는지 확인하려면 in_array를 사용하세요. 100,000개의 요소 배열에서 1000번 비교하는 데 소요되는 시간은 약 2초

3입니다.

먼저 이를 사용할 수 있습니다. array_flip은 키-값 교환을 수행한 다음 isset 메서드를 사용하여 요소가 존재하는지 확인하므로 효율성이 향상됩니다.

예: array_flip을 사용하여 먼저 키-값 교환을 수행한 다음 isset 메서드를 사용하여 100,000개 요소의 배열에서 1000번 비교하고 판단합니다.

<?php$arr = array();// 创建10万个元素的数组for($i=0; $i<100000; $i++){    $arr[] = $i;
}// 键值互换$arr = array_flip($arr);// 记录开始时间$starttime = getMicrotime();// 随机创建1000个数字使用isset比较for($j=0; $j<1000; $j++){    $str = mt_rand(1,99999);    isset($arr[$str]);
}// 记录结束时间$endtime = getMicrotime();echo &#39;run time:&#39;.(float)(($endtime-$starttime)*1000).&#39;ms<br>';/**
 * 获取microtime
 * @return float
 */function getMicrotime(){
    list($usec, $sec) = explode(' ', microtime());    return (float)$usec + (float)$sec;
}?>
로그인 후 복사

실행 시간:1.2781620025635ms

사용 array_flip 그리고 isset는 요소가 존재하는지 확인하고 100,000개의 요소 배열에서 1000번 비교합니다. 실행 시간은 약 1.2밀리초
이므로 큰 배열을 비교하려면 array_flipisset 메서드를 사용하는 것이 더 빠릅니다. in_array보다 훨씬 더 효율적입니다.

이 글에서는 PHP를 통해 배열 요소를 검색하여 효율성을 높이는 방법에 대해 설명합니다. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트를 참고하세요.

관련 권장 사항:

mysql 엄격 모드 엄격 모드에 대한 설명

php에서 폭발을 사용하여 문자열을 분할할 때 초보자가 쉽게 간과하기 쉬운 문제에 대한 설명

mysql에서 두 열의 데이터를 교환하는 방법에 대한 설명 테이블

위 내용은 PHP를 통해 배열 요소를 검색하여 효율성을 높이는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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