2013-03-26 54 views
2

我想創建一個函數,如果$ array1中的所有項都在$ array2中,則返回true,否則返回false。檢查數組元素是否在不同的陣列

我想要做的事:

$array1 = ['1', '3', '9', '17']; 
$array2 = ['1', '2', '3', '4', '9', '11', '12', '17']; 

function checkArray($arr, $arr2) { 
    If all elements in $arr are in $arr2 return true 
    else return false 
} 

if (checkArray($array1, $array2) { 
    // Function returned true 
} else { 
    // Function returned false 
} 

我想不出如何做到這一點!非常感謝。

SOLUTION:

function checkArray($needles, $haystack) { 
    $x = array_diff($needles, $haystack); 
    if (count($x) > 0) { 
     return false; 
    } else { 
     return true; 
    } 
} 
// Returns false because more needles were found than in haystack 
checkArray([1,2,3,4,5], [1,2,3]); 
// Returns true because all needles were found in haystack 
checkArray([1,2,3], [1,2,3,4,5]); 
+0

一個方便的功能,爲什麼不直接使用[和array_diff(http://php.net/manual/en/function.array-diff.php)??? – Baba 2013-03-26 21:01:21

+0

不知道這個,現在感覺像一個eejit大聲笑:)感謝您的幫助! – DavidC799 2013-03-26 21:08:08

回答

2
function checkArray($arr, $arr2) { 
    return !count(array_diff($arr, $arr2)); 
} 

和array_diff:返回包含所有從$arr中不存在在$arr2的條目的陣列。 http://php.net/manual/en/function.array-diff.php

+0

搜索時沒有找到這個!啊,你是個傳奇,好人歡呼! – DavidC799 2013-03-26 21:07:47

+0

這工作,很好!再次感謝。 – DavidC799 2013-03-26 21:19:42

1

我不太確定array_diff如何以任何方式有用。 那麼誰在乎是否有差異?你沒有比較數組,或者至少這不是我在問題中理解的。你想知道如果一個數組包含另一個

PHP有該

function checkArray($arr, $arr2) { 
    return (array_intersect($arr, $arr2) == $arr); 
} 
+0

現在你已經困惑了我...要試試這個array_diff。我也用完全不同的方式解決了我的問題,但絕對不是最好的解決方案! – DavidC799 2013-03-26 21:14:58

+0

array_dif會給你一個包含差異的數組。但是你想知道另一個數組中是否包含一個數組值,對嗎?單單運行array_diff不會給你太多。 – Think 2013-03-26 21:16:12

+0

那麼如果差異的數量大於零,那麼$ array1中的所有內容都不在$ array2中。或者至少我是這樣解釋的!無論哪種方式都教我新東西:) – DavidC799 2013-03-26 21:22:17

相關問題