【问题标题】:Exclude null values from COUNT in array从数组中的 COUNT 中排除空值
【发布时间】:2012-03-20 14:50:25
【问题描述】:

如何从数组的计数中排除空值? 因为 count 在计数中总是包含 null 值!

【问题讨论】:

标签: php


【解决方案1】:
count(array_filter($array, function($x) {return !is_null($x); })

【讨论】:

  • 优雅的解决方案,但这会在内存中构造一个临时列表。还在等待itertools.ifilter ;)
  • @phihag 谢谢。是的,如果您在有限的共享内存主机上或有一个非常大的数组要通过,上述实现可能不是最有效的。编辑:感谢您编辑修复代码。
  • 甚至count($array) - count(array_filter($array, 'is_null'))。最好使用内置而不是声明自己的匿名函数:-)
【解决方案2】:
function count_nonnull($a) {
    $total = 0;
    foreach ($a as $elt) {
        if (!is_null($elt)) {
            $total++;
        }
    }
    return $total;
}

【讨论】:

  • 我很想在那里看到一些牙套。
【解决方案3】:

尝试使用foreach 循环。

foreach($array as $index=>$value) {
    if($value === null) unset($array[$index]);
}
echo count($array);

或者如果你不想修改数组:

function myCount($arr)  {
    $count = 0;
    foreach($arr as $index=>$value) {
        if($value !== null) $count++;
    }
    return $count;    
}

echo myCount($array);

【讨论】:

  • 仍然是 in 而不是 as。在第二个(可以说是更可取的)版本中,您不需要 $index=>
  • @phihag 哎呀,那是偶然的...修复了。
  • 我认为函数中的'foreach'语句应该是:foreach($arr as $index=>$value)。可悲的是,不允许其他人提交少于 6 个字符的编辑,否则我会自己更正;-)
  • @ChayaCooper 我不确定这与当前答案有何不同。
  • 哦。我懂了。我会修复@ChayaCooper
【解决方案4】:

// 最简单的方法
回声计数(array_filter($array)); instructions

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 2019-08-01
相关资源
最近更新 更多