php检查数组是否只包含另一个数组的元素值

时间:2013-08-15 15:00:08

标签: php arrays

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

示例:

$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)函数的最佳方法是什么?

2 个答案:

答案 0 :(得分:5)

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

..或者想到它;

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

请注意,如果true,这将产生(string)$elementtocheck=(string)$validelement,因此实质上只适用于标量。如果数组(数组,对象)中的值更复杂,则无效。要使 工作,我们稍微改变一下:

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

... 假设当前顺序无关紧要/ sort()被允许被调用。

答案 1 :(得分:1)

您可以按建议array_intersect()使用here。这是一个小功能:

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";
    }
}

Demo!