php检查数组是否包含来自另一个数组的所有数组值

时间:2012-03-11 14:17:08

标签: php arrays

$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。有什么想法吗?

5 个答案:

答案 0 :(得分:175)

以前的答案都比他们需要做的更多。只需使用array_diff即可。这是最简单的方法:

$containsAllValues = !array_diff($search_this, $all);

这就是你所要做的一切。

答案 1 :(得分:138)

请看array_intersect()

$containsSearch = count(array_intersect($search_this, $all)) == count($search_this);

答案 2 :(得分:8)

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

答案 3 :(得分:3)

我认为你正在寻找交叉函数

array array_intersect ( array $array1 , array $array2 [, array $ ... ] )

array_intersect()返回一个包含所有array1值的数组  出现在所有的论点中。请注意,密钥会被保留。

http://www.php.net/manual/en/function.array-intersect.php

答案 4 :(得分:0)

这个怎么样:

function array_keys_exist($searchForKeys = array(), $searchableArray) { $searchableArrayKeys = array_keys($searchableArray); return count(array_intersect($searchForKeys, $searchableArrayKeys)) == count($searchForKeys); }