2011-07-28 13 views
2

番号7,86、および99が$categoryという配列に存在するかどうかを確認したい。複数の値が配列内にあるかどうかを調べる

これまでのところ、私はこれを持っていますが、私はそれを行うために3本のラインを使用したくない:

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とmのないn個の任意の要素を返します。

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

はい。ブール値は加算演算子の整数に変換されるので、下線を削除してください。 –

+0

'true' = 1、' false' = 0これはかなりの方法ではないかもしれませんが、仕事は終わりです。 – Jonathon

関連する問題