2011-12-09 33 views
0

所有值我有2個數組這可能是這個樣子:確定陣列1是否含有來自陣列2

$a1 = array('c','b','a'); 
$a2 = array('a', 'b', 'c', 'd', 'e'); 

我需要以某種方式檢查$a1每個值是否出現在$a2

我查看了array_diffarray_intersect,但無法看到它們如何使用,因爲它們只返回分別存在且不存在的值。

回答

2

我不確定你是什麼意思的「現在分別」,但array_diff是你正在尋找的功能。只要確保按照正確的順序將數組傳遞給函數。嘗試:

// result = no 
echo count(array_diff($a1, $a2)) ? 'yes' : 'no'; 
// result = yes 
echo count(array_diff($a2, $a1)) ? 'yes' : 'no'; 
+0

這就是我一直在尋找的,謝謝!我想我是在第一次嘗試時按錯誤順序傳遞給他們的 –

1

看看這個:

http://php.net/manual/de/function.in-array.php

好吧,我可以很清楚的:

的函數in_array()給你一個布爾值,如果針在乾草堆。 所以,這樣的行會爲你工作:

$return = in_array($a1, $a2, true); 

如果$a1$a2該函數返回true,否則爲false。第三個參數激活嚴格的搜索,所以即使錯誤是正確的,也不會返回。

+0

不是一個答案.. –

+0

由於PHP 4.2 in_array()採用陣列的所有參數。 – Tobias

+0

現在好多了。 –

0

您可以使用類似

sizeof(array_intersect($a1, $a2)) == sizeof($a1) 
0
function has_all_values($base, $comparing) { 
    foreach($comparing as $value) { 
     if(!in_array($base, $value)) 
      return false; 
    } 
    return true; 
}