给定以下数组 $mm
Array
(
[147] => Array
(
[pts_m] =>
[pts_mreg] => 1
[pts_cg] => 1
)
[158] => Array
(
[pts_m] =>
[pts_mreg] =>
[pts_cg] => 0
)
[159] => Array
(
[pts_m] =>
[pts_mreg] => 1
[pts_cg] => 1
)
)
当我运行 count(array_filter($mm))
时,我得到 3
作为结果,因为它不是递归的。
count(array_filter($mm), COUNT_RECURSIVE)
也不会这样做,因为我实际上需要递归地运行 array_filter
,然后计算它的结果。
所以我的问题是:在这种情况下如何递归运行 array_filter($mm)
?
我在这里的预期结果是 4
。
请注意,我没有使用任何回调,因此我可以排除 false、null 和 empty。
最佳答案
来自PHP array_filter
documentation :
//This function filters an array and remove all null values recursively.
<?php
function array_filter_recursive($input)
{
foreach ($input as &$value)
{
if (is_array($value))
{
$value = array_filter_recursive($value);
}
}
return array_filter($input);
}
?>
//Or with callback parameter (not tested) :
<?php
function array_filter_recursive($input, $callback = null)
{
foreach ($input as &$value)
{
if (is_array($value))
{
$value = array_filter_recursive($value, $callback);
}
}
return array_filter($input, $callback);
}
?>
关于php - 计算二维数组中的 "truthy"个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6795621/