簡體   English   中英

如何過濾多維數組並計算過濾后的值?

[英]How can I filter a multidimensional array and count the filtered values?

我有一個來自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列,然后對array進行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。 回調將不起作用,因為您將無法訪問變量來存儲計數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM