2012-05-07 168 views
4

我有2個數組,第二個數組必須包含第一個數組中的所有元素,如何檢查?謝謝檢查數組是否包含其他數組的所有元素?

For example 

array 1: Array ([0] => Email [1] => 1_Name) 
array 2: Array ([0] => 1_Name [1] =>) 

In this case it is invalid , as array 2 do not have Email 

array 1: Array ([0] => Email [1] => 1_Name) 
array 2: Array ([0] => 1_Name [1] => Address [2]=> Email) 

In this case it is valid 

回答

4

使用array_intersect()和測試,其輸出是相同的長度:

if (count(array_intersect($arr1, $arr2)) === count($arr1)) { 
    // contains all 
} 

對於關聯數組,其中鍵也必須匹配,使用array_intersect_assoc()代替。

+0

難道你不應該對$ arr2進行計數嗎? – StackOverflowNewbie

+0

@StackOverflowNewbie事實上應該不重要。重點是兩者的交集與第一個或第二個的內容相同,因此包含相同的集合。 –

1
$invalid = false; 
foreach ($array1 as $key => $value) { 
    if (!array_key_exists($key, $array2)) { 
     $invalid = true; 
     break; 
    } 
} 
var_dump($invalid); 
2

array_diff在這裏可以使用。

if(array_diff($array1,$array2)) { 
    // array1 contains elements that are not in array2 
    echo "invalid"; 
} 
else { 
    // all elements of array1 are in array2 
    echo "valid"; 
} 
0

還有array_intersect()像@Michael建議的。如果你想知道哪個元素丟失,你可以使用array_diff()

相關問題