如何过滤多维数组并计算过滤后的值?

时间:2015-06-11 13:43:50

标签: php arrays multidimensional-array

我有一个来自mysql数据库的数组。所以它是这样构造的(只是前两个条目):

Array
(
    [0] => Array
        (
            [id_cre] => CD000000001
            [0] => CD000000001
            [id_az] => AZ000000001
            [1] => AZ000000001
        )

    [1] => Array
        (
            [id_cre] => CD000000002
            [0] => CD000000002
            [id_az] => 
            [1] => 
        )
)

我想计算数组中有多少条目[id_az] =>''

如果我这样做:

count($creds)

我得到2(数组中的项目数)。

我更喜欢重复使用此数组(查询已针对另一个报表运行),而不是使用WHERE子句执行新查询以选择WHERE id_az = ''

任何提示?

2 个答案:

答案 0 :(得分:4)

这应该适合你:

然后使用array_column()count()数组获取列id_az,例如。

echo count(array_column($creds, "id_az"));

答案 1 :(得分:0)

为什么不使用一个好的旧foreach循环?

$count = 0;
foreach($data as $row)
{
  $count += empty($row['id_az']) ? 0 : 1;
}

或者另外一个带有匿名函数的array_map

$count = 0;
array_map(function($row) use (&$count) { $count += empty($row['id_az']) ? 0 : 1; }, $data);

但这是PHP> 5.3。回调不起作用,因为您无权访问变量来存储您的计数。