首页 > 解决方案 > 分组和计数数组php

问题描述

我有一个包含另一个数组值的数组:例如。

array:69 [▼
  0 => array:9 [▼
    "app" => "a.log"
    "context" => "local"
    "level" => "error"
    "level_class" => "danger"

我想根据它们的级别对所有错误进行分组例如:

array:
   "error" => "count of Errors",
   "debug" => "count of debug"

我试过这样做:

foreach($logs as $log){
        $result[$log['level']] = $log;                    
}

我得到的结果是:

array:2 [▼
   "error" => "Last error entry in array"
   "failed" => "Last failed entry in array"
]

任何帮助表示赞赏。谢谢你。

标签: phparrayslaravel-5php-7

解决方案


当您这样做时$result[$log['level']] = $log;,您将$result[$log['level']]在每次迭代中替换值,这就是为什么您最终只得到每个级别的最后一个条目的原因。相反,您需要使用

$result[$log['level']][] = $log;

附加到该键而不是替换它。

修复该问题后,您将拥有一个数组数组,而不仅仅是一个数组数组,您可以使用

$counts = array_map('count', $result);

推荐阅读