2013-07-25 1 views
0

나는 두 개의 배열을 비교하고 적어도 하나의 값이 인지 확인합니다.첫 번째 일치 때까지 PHP array_intersect()

이 잘 작동합니다 :

$arr1 = array(1, 2, 3, 4, 5); 
$arr2 = array(2, 3, 4, 5, 6); 
if (array_intersect($arr1, $arr2)) { 
    // good, at least one match found 
} 

그러나, 문제는 성능이다. 첫 번째 일치 항목이 발견 된 후 배열을 통해 루핑을 계속하는 것은 의미가 없습니다. 이것을 달성하기위한 네이티브 PHP 함수 또는 유용한 스 니펫이 있습니까?

foreach()in_array()의 조합이 트릭을 수행합니까?

+0

2 개의 어레이를 게시 할 수 있습니까? – Maximus2012

+0

@ Maximus2012 배열의 내용이 중요한 이유는 무엇입니까? 이 일을하는 것은 내장 된 것이 없다고 생각합니다. 그러나 그들 중 하나에서'array_flip'을 사용할 수 있고,'array_key_exists'를 사용하는 다른 루프에서 루프를 사용할 수 있습니다. – Barmar

+0

in_array는 내부적으로 다른 배열의 각 값에 대해 하나의 배열 값을 순환하므로 아무런 비용 절감 효과가 없습니다. – Orangepill

답변

2

어때?

foreach ($arr1 as $key => $val) { 
    if (in_array($val, $arr2)){ 
     // do something, maybe return so you wouldn't need break 
     break; 
    } 
} 
+0

예, 이것은 제가 염두에 두었던 것입니다. 나는 네이티브 함수 또는'array_intersect()'에 대한 매개 변수가 있기를 바랄 뿐이었다. – Geo