所有值我有2個數組這可能是這個樣子:確定陣列1是否含有來自陣列2
$a1 = array('c','b','a');
$a2 = array('a', 'b', 'c', 'd', 'e');
我需要以某種方式檢查$a1
每個值是否出現在$a2
。
我查看了array_diff
和array_intersect
,但無法看到它們如何使用,因爲它們只返回分別存在且不存在的值。
所有值我有2個數組這可能是這個樣子:確定陣列1是否含有來自陣列2
$a1 = array('c','b','a');
$a2 = array('a', 'b', 'c', 'd', 'e');
我需要以某種方式檢查$a1
每個值是否出現在$a2
。
我查看了array_diff
和array_intersect
,但無法看到它們如何使用,因爲它們只返回分別存在且不存在的值。
我不確定你是什麼意思的「現在分別」,但array_diff是你正在尋找的功能。只要確保按照正確的順序將數組傳遞給函數。嘗試:
// result = no
echo count(array_diff($a1, $a2)) ? 'yes' : 'no';
// result = yes
echo count(array_diff($a2, $a1)) ? 'yes' : 'no';
看看這個:
http://php.net/manual/de/function.in-array.php
好吧,我可以很清楚的:
的函數in_array()給你一個布爾值,如果針在乾草堆。 所以,這樣的行會爲你工作:
$return = in_array($a1, $a2, true);
如果$a1
是$a2
該函數返回true,否則爲false。第三個參數激活嚴格的搜索,所以即使錯誤是正確的,也不會返回。
您可以使用類似
sizeof(array_intersect($a1, $a2)) == sizeof($a1)
function has_all_values($base, $comparing) {
foreach($comparing as $value) {
if(!in_array($base, $value))
return false;
}
return true;
}
這就是我一直在尋找的,謝謝!我想我是在第一次嘗試時按錯誤順序傳遞給他們的 –