>  기사  >  백엔드 개발  >  PHP에서 배열 요소를 찾는 효율성을 높이는 방법

PHP에서 배열 요소를 찾는 효율성을 높이는 방법

墨辰丷
墨辰丷원래의
2018-05-23 09:27:211645검색

이 글에서는 참고할만한 좋은 PHP 배열 요소 검색 효율을 높이는 방법을 주로 소개합니다. 관심 있는 친구들이 참고하면 좋을 것 같고, 모두에게 도움이 되길 바랍니다.

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() 함수는 바늘 유형이 동일한지 여부도 확인합니다. 건초 더미에 있는

반환 값

바늘이 발견되면 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>&#39;;
/**
 * 获取microtime
 * @return float
 */
function getMicrotime(){
 list($usec, $sec) = explode(&#39; &#39;, microtime());
 return (float)$usec + (float)$sec;
}
?>

실행 시간:2003.6449432373ms

요소가 존재하는지 확인하려면 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>&#39;;
/**
 * 获取microtime
 * @return float
 */
function getMicrotime(){
 list($usec, $sec) = explode(&#39; &#39;, microtime());
 return (float)$usec + (float)$sec;
}
?>

실행 시간:

1.2781620025635ms

array_flip

isset을 사용하여 100,000개 요소의 배열을 1000번 비교합니다. 따라서 실행 시간은 약 1.2밀리초

입니다. 따라서 대규모 배열을 비교하려면

array_flip을 사용하세요. isset 방법은 in_array보다 훨씬 더 효율적입니다.

관련 권장 사항:

php

배열 요소에서 중복 항목을 빠르게 제거하는 방법
array_sum()을 사용하여 큰따옴표로 묶인

배열 요소

의 합계를 계산하는 방법 액세스 배열 처리 방법 요소 오류 보고

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.