【问题标题】:PHP return only 0 in array_filterPHP 在 array_filter 中只返回 0
【发布时间】:2020-09-06 20:51:16
【问题描述】:

我试图仅在数组中的值仅为0 时返回。因为array_filter自动过滤0nullempty等我需要使用自定义回调。

但是得到不是nullempty的每一个回报

数组是

[
    (int) 0 => '0',
    (int) 1 => '-100',
    (int) 2 => '100'
]

function countBETrades($arr) {
    $arrBE = array_filter($arr, function($v){
        return $v !== false && !is_null($v) && ($v != '' || $v == '0');
    });
    
    return count($arrBE);
}

【问题讨论】:

  • 是的,但我正在寻找要返回的值 1,因为只有一个 0
  • 它只会过滤 falsenull 值,因为它将匹配 $v != ''。似乎您想用&& 替换||。但是Berto99的回答肯定更贴切

标签: php arrays array-filter


【解决方案1】:

如果你只想计算数字0,那么你只需要检查它(使用三元组=来强制PHP检查类型,所以null === 0是假的):

function countBETrades($arr) {
    $arrBE = array_filter($arr, function($v){
        return $v === 0 || $v === '0';
    });
    
    return count($arrBE);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    相关资源
    最近更新 更多