3

我想检查一个数组是否只包含允许的元素值(在另一个数组中可用)。

例子:

$allowedElements = array('apple', 'orange', 'pear', 'melon');

checkFunction(array('apple', 'orange'), $allowedElements); // OK

checkFunction(array('pear', 'melon', 'dog'), $allowedElements); // KO invalid array('dog') elements

实现此 checkFunction($a, $b) 函数的最佳方法是什么?

4

2 回答 2

5
count($array) == count(array_intersect($array,$valid));

..或者想一想;

$array == array_intersect($array,$valid);

请注意,这将产生trueif (string)$elementtocheck=(string)$validelement,因此本质上仅可用于标量。如果您的数组(数组、对象)中有更复杂的值,这将不起作用。为了使它起作用,我们对其进行了一些修改:

sort($array);//order matters for strict
sort($valid);
$array === array_intersect($valid,$array);

...假设当前订单无关紧要/sort()允许调用。

于 2013-08-15T15:11:38.297 回答
1

你可以按照这里array_intersect()的建议使用。这是一个小功能:

function CheckFunction($myArr, $allowedElements) 
{
    $check = count(array_intersect($myArr, $allowedElements)) == count($myArr);

    if($check) {
        return "Input array contains only allowed elements";
    } else {
        return "Input array contains invalid elements";
    }
}

演示!

于 2013-08-15T15:03:41.057 回答