让我们从一个例子开始
$ array ['0']等于value1。 $ array ['1']等于value2。 $ array ['3']等于value1
我需要编写一个函数来检查数组中是否存在除一定字符串之外的任何内容。
如果我允许“value1”和“value2”存在于数组中,并且我将函数放在上面的数组中,它将返回true。
如果我输入函数$ array ['0'] ='value3'$ array ['1'] ='value2',函数将返回false,因为数组包含“value3”,只有“value1”和“value2”是在这个例子中允许。
是否存在执行此操作的内置PHP函数?如果没有,我将如何写它?
答案 0 :(得分:3)
此功能可以满足您的需求:
function anything_but( $input_array, $values) {
return count( array_diff( array_unique( $input_array), $values)) == 0;
}
它只是创建一个唯一的$input_array
,并计算该数组与$values
数组之间的差异。如果该差异中没有元素,则两个数组都具有相同的元素,并且该函数将返回true。如果没有,它将有一个或多个元素,这使得函数返回false。
您可以在the demo中看到它。
答案 1 :(得分:1)
function valuesInArray($array, $allow)
{
foreach($array as $value)
{
if(!in_array($value, $allow)) return false;
}
return true;
}
无法想到更短的方法来做到这一点。如果你还需要检查类型(=== not ==),那么在in_array中添加一个'true'作为第三个参数。
根据您的示例使用的是:
valuesInArray(array('value1', 'value2', 'value1'), array('value1', 'value2')); // true
valuesInArray(array('value3', 'value2'), array('value1', 'value2')); // false