【问题标题】:How to check if an array contains all false values?如何检查数组是否包含所有错误值?
【发布时间】:2015-07-22 12:21:57
【问题描述】:

如何检查数组是否包含所有false 值?

$arr  = array(false, false, false);
$arr2 = array(true, false, false, 123);

check_false_array($arr);
true
check_false_array($arr2);
false

编辑:不仅允许true/false

【问题讨论】:

  • Rizier123,不一定是同一个问题。
  • @George 为什么不应该这样?它准确地显示了如何检查一个数组是否只包含相同的值
  • 数组包含相同的值 vs 数组包含相同的特定值,不是吗?
  • 我同意 George 的观点,因为这会更深入,因为使用布尔值会改变这个问题,足以被认为是不同的。
  • @George wow 只是为了改变:if (count(array_unique($allvalues)) === 1 && end($allvalues) === 'true') {if (count(array_unique($allvalues)) === 1 && end($allvalues) === FALSE) { 使它成为一个不同的问题?

标签: php arrays


【解决方案1】:

使用array_filter()empty()array_filter() 将删除所有错误值,如果 empty() 返回 true,则您拥有所有错误值。

function check_false_array(array $array) {
    return empty(array_filter($array, 'strlen'));
}

var_export(check_false_array(array(false, false, false)));
echo "\n";
var_export(check_false_array(array(false, true, false)));
echo "\n";
var_export(check_false_array(array(0,0,0)));

Demo

如果您希望将0 视为false,只需删除array_filter() 中对'strlen' 的回调即可。

Demo

【讨论】:

  • 如果数组是array(0,0,0)怎么办?
  • @b0s3 "all false values" 会暗示 any 错误值 - 也许这就是我。
  • 如果您将'strlen' 传递给array_filter(),它将正确处理此问题。查看演示。
  • @George array(false, false) !== array(false, 0)false !== 0。 AFAIK。
  • @b0s3 那不是我的论点。
【解决方案2】:

您可以使用array_filter 与回调一起使用与falseempty 相同的匹配来检查。

$arr  = array(false, false, false);
$check = array_filter($arr, function($x) {
  return ($x !== false);
});

if(empty($check)) // $check will be empty if all the value is false (only false)

【讨论】:

    【解决方案3】:

    这两个函数将检查您需要什么,假设数组只能有“真”或“假”,没有别的

    function isFalseArray($arr){
        foreach($arr as $a){
            if($a == "true")
               return false;
        }
        return true;
    }
    
    function isTrueArray($arr){
        foreach($arr as $a){
            if($a == "false")
               return false;
        }
        return true;
    }
    

    【讨论】:

      猜你喜欢
      • 2011-04-23
      • 2023-03-13
      • 1970-01-01
      • 2012-01-10
      • 2019-08-10
      • 2019-02-14
      • 2020-11-18
      • 2015-06-24
      • 2015-01-01
      相关资源
      最近更新 更多