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

How to determine if an array contains anything but a specific value?

给定以下值数组,确定数组是否包含值 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_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 - 我认为您当前的版本是最佳的。它可能只涉及 1 次测试,找到差异,然后 return。

其他解决方案(到目前为止)将始终处理整个数组,然后检查结果是否为空。所以他们总是会处理每一个元素。

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