我想检查一个数组是否只包含允许的元素值(在另一个数组中可用)。
示例:
$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)函数的最佳方法是什么?
答案 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";
}
}