2011-07-28 3 views
2

숫자 7, 86 및 99가 $category이라는 배열에 있는지 확인하고 싶습니다.배열에 둘 이상의 값이 있는지 확인하십시오.

은 지금까지 나는 이것을 가지고,하지만 난 그것을 할 세 줄을 사용하지 않으 :

if (in_array("7", $category)) { //do something } 
+0

모두 존재하는 경우에만 수행하고 싶습니까? '&&'? –

+0

그들 중 하나가 존재하는 경우 –

답변

3
$search = array("7", "86", "99"); 

ID는하여 $category 변수의 키 인 경우 :

if (count(array_intersect($search, $category)) == count($search)) { 
    // all found 
} 
if (count(array_intersect($search, $category)) > 0) { 
    // some found 
} 
+0

매우 깨끗하게 2/3 줄의 코드 +1 –

2

array_diff이 배열 m를 비교, n은 n은하지 m의 요소를 반환합니다.

count(array_diff(array(7,86,99), $category)) 
1
if (in_array("7", $category) + in_array("86", $category) + in_array("99", $category) >= 2) 
    echo "at least two is exist in the array"; 

업데이트 : ID가 $category 변수의 값이있는 경우

if (count(array_intersect($search, array_keys($category))) == count($search)) { 
    // all found 
} 
if (count(array_intersect($search, array_keys($category))) > 0) { 
    // some found 
} 

: >= 1 사용 또는 ||

+0

'in_array'는 정수가 아니라 bool을 반환합니다. –

+0

예. 부울 값은 더하기 연산자의 정수로 변환되므로 * downvote를 제거하십시오. –

+0

'true' = 1,'false' = 0. 이것은 꽤 좋은 방법은 아니지만 일을 끝내게합니다. – Jonathon

관련 문제