我想检查一个数组是否只包含允许的元素值(在另一个数组中可用)。
例子:
$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()
被允许调用。
关于php检查一个数组是否只包含另一个数组的元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18255500/