小编典典
应该管用
$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