php array递归,如何在PHP数组中递归运行array_filter?

小编典典

应该管用

$count = array_sum(array_map(function ($item) {

return ((int) !is_null($item['pts_m'])

+ ((int) !is_null($item['pts_mreg'])

+ ((int) !is_null($item['pts_cg']);

}, $array);

或许

$count = array_sum(array_map(function ($item) {

return array_sum(array_map('is_int', $item));

}, $array);

肯定还有更多可能的解决方案。如果你想使用array_filter()(没有回调)记住,它把0为false过,因此它会 删除

任何0从数组-值。

如果您在5.3之前的版本中使用PHP,则应使用foreach-loop

$count = 0;

foreach ($array as $item) {

$count += ((int) !is_null($item['pts_m'])

+ ((int) !is_null($item['pts_mreg'])

+ ((int) !is_null($item['pts_cg']);

}

更新资料

关于以下评论:

Thx @kc我实际上希望该方法删除false,0,空等

当这仅仅是您想要的时,解决方案也非常简单。但是现在我不知道该如何解释

我的预期结果是5。

无论如何,它现在很短:)

$result = array_map('array_filter', $array);

$count = array_map('count', $result);

$countSum = array_sum($count);

结果数组看起来像

Array

(

[147] => Array

(

[pts_mreg] => 1

[pts_cg] => 1

)

[158] => Array

(

)

[159] => Array

(

[pts_mreg] => 1

[pts_cg] => 1

)

)

2020-05-29

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值