$all = array
(
0 => 307,
1 => 157,
2 => 234,
3 => 200,
4 => 322,
5 => 324
);
$search_this = array
(
0 => 200,
1 => 234
);
我想知道$ all是否包含所有$ search_this值並返回true或false。有什麼想法嗎?php檢查數組是否包含來自另一個陣列的所有數組值
$all = array
(
0 => 307,
1 => 157,
2 => 234,
3 => 200,
4 => 322,
5 => 324
);
$search_this = array
(
0 => 200,
1 => 234
);
我想知道$ all是否包含所有$ search_this值並返回true或false。有什麼想法嗎?php檢查數組是否包含來自另一個陣列的所有數組值
$containsSearch = count(array_intersect($search_this, $all)) == count($search_this);
你知道你可以省略'count()'調用嗎? – Wrikken 2013-08-15 16:01:31
@Wrikken在'array_intersect()'期間值不能重新排序?我的意思是,'['a','b']!= ['b','a']'。 – sbichenko 2013-10-16 18:57:07
@exizt:'array_intersect()'不會改變輸入數組,所以'$ search_this'&'$ all'是安全的(它只是返回一個輸出)。函數簽名是'array array_intersect(array $ array1,array $ array2 [,array $ ...])'(safe)。如果它能/可以改變它們,它會是'array array_intersect(array&$ array1,array&$ array2 [,array&$ ...])'(可能改變輸入參數)。此外,'$ search_this'的鍵是_preserve_,並保留第一個數組的順序。因此,兩個鍵/值對,按順序匹配。 – Wrikken 2013-10-16 21:03:29
我認爲你正在尋找的交叉功能
array array_intersect (array $array1 , array $array2 [, array $ ... ])
array_intersect()
返回一個包含有 存在於所有的參數數組1的所有值的數組。請注意,鍵被保留。
謝謝,它的作品! :) – peter 2012-03-11 14:37:23
有點與array_diff
$musthave = array('a','b');
$test1 = array('a','b','c');
$test2 = array('a','c');
$containsAllNeeded = 0 == count(array_diff($musthave, $test1));
// this is TRUE
$containsAllNeeded = 0 == count(array_diff($musthave, $test2));
// this is FALSE
以前的答案都在做更多的工作比他們需要更短。只需使用array_diff即可。這是最簡單的方法:
這就是你所要做的。
如何:
function array_keys_exist($searchForKeys = array(), $searchableArray) { $searchableArrayKeys = array_keys($searchableArray); return count(array_intersect($searchForKeys, $searchableArrayKeys)) == count($searchForKeys); }
[檢查,看看是否一個數組的元素是在PHP另一個陣列]的可能的複製(http://stackoverflow.com/questions/523796/checking-to -see-if-one-arrays-elements-in-another-array-in-php) – 2017-04-19 10:01:11
@VishalKumarSahu不完全重複:你給定的鏈接與檢查是否有任何元素包含在另一個數組中,而不是如果所有元素都包含在另一箇中。 – Stefan 2017-06-20 15:15:30