serializearray 대규모 배열을 처리할 때 PHP의 array_diff 함수 효율성 문제

WBOY
풀어 주다: 2016-07-29 08:47:24
원래의
1161명이 탐색했습니다.

cisa가 PHP 공식 BUG 페이지에 제출하는 방법

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


< ?php
/ **
* PHP 5.2.6 이상에서 array_diff() 함수가
* 큰 배열 처리 시 시간이 오래 걸리는 문제 해결
*
* 정리: http://www.CodeBit. CN
* 출처: http://bugs.php.net/47643
*/
function array_diff_fast($data1, $data2) {
$data1 = array_flip($data1)
$data2 = array_flip($data2);
foreach($ data2 as $hash => $key) {
if (isset($data1[$hash])) unset($data1[$hash])
}
return array_flip ($data1); > 코드는 다음과 같습니다:


/**
* PHP 5.2.6 이상에서 큰 배열을 처리할 때 array_diff() 함수의 효율성 문제를 해결
* ChinaUnix 포럼의 중재자인 hightman의 아이디어에 따라 작성된 방법

* * 정리: http:/ /www.CodeBit.cn * 참조: http://bbs.chinaunix.net/viewthread.php?tid=938096&rpid=6817036&ordertype=0&page=1#pid6817036 */ function array_diff_fast($firstArray, $secondArray) {

// 두 번째 배열 변환 키-값 관계

$secondArray = array_flip($secondArray)
// 첫 번째 배열 반복
foreach($firstArray as $key => $value ) {
// 첫 번째 배열인 경우 첫 번째 배열의 값이 두 배열에 존재합니다
if (isset($secondArray[$value])) {
// 첫 번째 배열에서 해당 요소를 제거합니다. array
unset($firstArray[ $key]);
}
}
return $firstArray;
}
?> 두 번째 배열의 키와 값만 교환하므로 더 효율적입니다.
참고: PHP에 내장된 array_diff() 함수는 여러 배열을 처리할 수 있지만 이 기사에서 제공하는 방법은 두 배열의 비교만 처리합니다.
위 내용은 serializearray의 내용을 포함하여 큰 배열을 처리할 때 serializearray PHP의 array_diff 함수의 효율성 문제를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.


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