如何确定数组是否包含特定值以外的任何内容?
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
以使函数 正确。
给定以下值数组,确定数组是否包含值 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
以使函数 正确。