php - 计算二维数组中的 "truthy"个值

标签 php arrays multidimensional-array count array-filter

给定以下数组 $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/

相关文章:

javascript - Array() 中的 getElementById() 会覆盖数组中的其他元素

php - mySQL 对同一查询进行双重过滤

php - 限制共享主机上 IP 的资源使用

Java 正则表达式 : UNGREEDY flag

python - 屏蔽python 2d数组以在特定阈值下更改圆圈中的值

c - 在结构体中使用指向动态二维数组的指针

PHP 使用 echo over print 的实际优势

java - 通过选择排序按字母顺序对字符串数组进行排序?

javascript - 使用jquery从数组中删除特定值之后的所有值

java - 如何在 Java 中创建我的数组的数组? (没有数组列表)