我想检查一个数组是否只包含允许的元素值(在另一个数组中可用)。
示例:
$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)函数的最佳方法是什么?
count($array) == count(array_intersect($array,$valid));
或者仔细想想;
$array == array_intersect($array,$valid);
请注意,如果(string)$elementtocheck=(string)$validelement
,那么这将产生true
,因此本质上仅适用于标量。如果您的数组中有更复杂的值(数组、对象),这将不起作用。为了使工作,我们对其进行了一些更改:
sort($array);//order matters for strict
sort($valid);
$array === array_intersect($valid,$array);
假设当前订单无关紧要/sort()
被允许调用。
您可以按照此处的建议使用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";
}
}