查找数组中是否存在除特定字符串以外的任何字符串


Find if anything but certain strings are in an array

让我们从一个例子开始
$array['0']等于value1$数组['1']等于值2$数组['3']等于值1。
我需要编写一个函数来检查数组中是否存在除特定字符串集之外的任何东西。
如果我允许"value1"answers"value2"存在于一个数组中,并将上面的数组赋予函数,它将返回true。
如果我给函数$array['0']='value3'$array['1']='value2'赋值,该函数将返回false,因为该数组包含"value3",并且在本例中只允许使用"value1"answers"value2"
是否存在这样的内置PHP函数?如果没有,我该怎么写呢?

此函数将执行您想要的操作:

function anything_but( $input_array, $values) {
    return count( array_diff( array_unique( $input_array), $values)) == 0;
}

它只是创建一个唯一的$input_array,并计算该数组和$values数组之间的差。如果差异中没有元素,那么两个数组都有相同的元素,函数将返回true。如果没有,它将有一个或多个元素,这将使函数返回false。

你可以在演示中看到它的工作原理。

function valuesInArray($array, $allow)
{
    foreach($array as $value)
    {
        if(!in_array($value, $allow)) return false;
    }
    return true;
}

想不出比这更短的方法了。如果您还需要检查类型(==不是==),那么在in_array中添加一个"true"作为第三个参数。

根据你的例子,用法是:

valuesInArray(array('value1', 'value2', 'value1'), array('value1', 'value2')); // true
valuesInArray(array('value3', 'value2'), array('value1', 'value2')); // false