[英]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.