0

让我们从一个例子开始。
$array['0'] 等于 value1。$array['1'] 等于 value2。$array['3'] 等于 value1。
我需要编写一个函数来检查数组中是否存在除一组字符串之外的任何内容。
如果我允许“value1”和“value2”存在于一个数组中,并且我给函数上面的数组,它将返回 true。
如果我输入函数 $array['0'] = 'value3' $array['1'] = 'value2',该函数将返回 false,因为数组包含“value3”并且只有“value1”和“value2”本例中允许。
是否存在这样的内置 PHP 函数?如果没有,我将如何写它?

4

2 回答 2

3

此功能将满足您的需求:

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

它只是创建一个 unique $input_array,并计算该数组与该$values数组之间的差异。如果该差异中没有元素,则两个数组具有相同的元素,并且该函数将返回 true。如果不是,它将有一个或多个元素,这使得函数返回 false。

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

于 2012-07-31T19:16:08.923 回答
1
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
于 2012-07-31T19:13:40.733 回答