【问题标题】:Find if anything but certain strings are in an array查找数组中是否有除某些字符串之外的任何内容
【发布时间】:2012-07-31 19:08:36
【问题描述】:

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

【问题讨论】:

  • 请提供更多信息,因为我理解你的问题,这可以像 if($array['0']== $value1 || $array['2']== value2){ return真}否则{返回假}
  • 它需要为未知数量的数组值工作。

标签: php


【解决方案1】:

此功能将满足您的需求:

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

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

您可以在 the demo 中看到它的工作原理。

【讨论】:

    【解决方案2】:
    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
    

    【讨论】:

      猜你喜欢
      • 2016-01-26
      • 1970-01-01
      • 2014-03-26
      • 2022-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多