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



>我有一个来自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 = ''

有什么提示吗?

这应该适合您:

只需获取带有 array_column() 的列id_az,然后count()数组,例如

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

为什么不使用一个好的老式 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。回调不起作用,因为您将无法访问用于存储计数的变量。

最新更新