Php 如何确定数组是否包含除特定值以外的任何内容?

Php 如何确定数组是否包含除特定值以外的任何内容?,php,php-7,Php,Php 7,给定下面的值数组,确定数组是否包含值4以外的内容的最佳方法是什么 $values = [1,2,3,4,5,6]; 为了清楚起见,我不想检查4是否根本不存在,因为4仍然可以在数组中。我想检查是否有其他号码 我能想到的唯一方法是使用函数,如下所示: function checkOtherValuesExist(array $values, $search) { foreach ($values as $value) { if ($value !== $search) r

给定下面的值数组,确定数组是否包含值4以外的内容的最佳方法是什么

$values = [1,2,3,4,5,6];
为了清楚起见,我不想检查4是否根本不存在,因为4仍然可以在数组中。我想检查是否有其他号码

我能想到的唯一方法是使用函数,如下所示:

function checkOtherValuesExist(array $values, $search) {
  foreach ($values as $value) {
    if ($value !== $search) 
      return TRUE;
    }
  }
}

只需执行
array\u diff
即可获得不带4的数组

$diff = array_diff($values, [4]);

if (!empty($diff)) {
    echo "Array contains illegal values! "
        . "Legal values: 4; Illegal values: " . implode(', ', $diff);
} else {
    echo "All good!";
}

只需执行
array\u diff
即可获得不带4的数组

$diff = array_diff($values, [4]);

if (!empty($diff)) {
    echo "Array contains illegal values! "
        . "Legal values: 4; Illegal values: " . implode(', ', $diff);
} else {
    echo "All good!";
}

TBH-我认为你目前的版本是最理想的。它可能只涉及一个测试,找到一个差异,然后返回

其他解决方案(到目前为止)将始终处理整个阵列,然后检查结果是否为空。因此,他们将始终处理每个元素


您应该添加一个
return FALSE
,以使函数正确。

TBH-我认为您当前的版本是最理想的。它可能只涉及一个测试,找到一个差异,然后返回

其他解决方案(到目前为止)将始终处理整个阵列,然后检查结果是否为空。因此,他们将始终处理每个元素


您应该添加一个
return FALSE
,使函数正确。

为什么不使用
array\u filter
?在数组中有一个神奇的内置函数调用
。\u array
@DavidJawHpan您能添加一些答案,说明如何使用
在数组中检查任意值吗?@DavidJawHpan仅在数组中检查它是否存在,而不是查看是否存在除XYep以外的其他值—您自己的解决方案是最好的。最后返回false。为什么不使用
array\u filter
?array中有一个神奇的内置函数调用
@DavidJawHpan能否添加一些答案,说明如何使用数组中的
检查任意值,不想看到除了XYep之外是否还有其他值—您自己的解决方案是最好的。只需在结尾处返回false。没错,尽管可能需要编写更多的代码,OP提出的解决方案是最优的。它一知道结果就会返回。而其他建议(如array_filter)将遍历整个数组,即使只遍历第一个元素而遍历其余元素就知道答案也是无用的。实际上,考虑到这一点,不确定array_filter解决方案是否更短……确切地说,尽管它可能写得更多一些,但OP提出的解决方案是最优的。它一知道结果就会返回。而其他建议(如array_filter)将遍历整个数组,即使只遍历第一个元素而遍历其余元素就知道答案也是无用的。实际上考虑一下,不确定array_filter解决方案是否更短……这与array filter一样,是次优的。甚至OP提出的解决方案也更好:)这和阵列滤波器一样,是次优的。甚至OP提出的解决方案也更好:)