1

我想知道是否有一个 PHP 函数可以检查一个数组的所有值是否存在于另一个数组中。

所以例如我有这个:

$a = array ('v1', 'v3', 'v4');
$b = array ('v1', 'v2', 'v3', 'v4', 'v5');

我想与$a比较$b。并且由于它的所有值$a也存在于$b它应该返回true

在 PHP 中有没有一种有效的方法来做到这一点?

4

5 回答 5

4

第一种方式

$result = $a === array_intersect($a, $b);

第二种方式

$result = !count(array_diff($a, $b));
于 2013-11-10T11:53:30.903 回答
2

使用array_diff. 它返回第一个数组中第二个数组中不存在的所有元素。如果结果为空,则所有项目都将存在于另一个数组中。

于 2013-11-10T11:50:54.917 回答
0
<?php

$a = array('v1', 'v3', 'v4');
$b = array('v1', 'v2', 'v3', 'v4', 'v5');

function is_array_in_array($a, $b) {
    return count($a) === count(array_intersect($a, $b));
}

$test = is_array_in_array($a, $b);

var_dump($test);
于 2013-11-10T11:54:32.807 回答
0
$a = array ('v1', 'v3', 'v4');
$b = array ('v1', 'v2', 'v3', 'v4', 'v5');

function compare($first,$second) {
    return count(array_diff($first, $second))==0;
}

compare($a,$b); // true

http://us3.php.net/manual/en/function.array-diff.php

于 2013-11-10T11:55:36.193 回答
0

这可以通过使用以下方法轻松完成:

$result = $a === array_intersect($a, $b);
于 2013-11-10T11:57:06.330 回答