php关联数组计数

时间:2014-04-15 09:10:10

标签: php arrays count associative-array

我想计算我所拥有的关联数组中数据的出现次数。这是我的数组的输出:

Array ( [0] => Array ( [url] => http://test.com [date] => 14-04-2014 [time] => 16:06:09 ) [1] => Array ( [url] => Direct [date] => 14-04-2014 [time] => 16:06:37 ) [2] => Array ( [url] => http://test.com [date] => 15-04-2014 [time] => 08:10:43 ) [3] => Array ( [url] => http://test.com [date] => 15-04-2014 [time] => 08:50:02 ) [4] => Array ( [url] => http://test.com [date] => 15-04-2014 [time] => 08:50:06 ) [5] => Array ( [url] => http://test.com [date] => 15-04-2014 [time] => 08:50:09 ) )

然后我循环完成这样的结果:

foreach ($refs as $key => $va){

echo $va['date'];   

}

我想计算相同的日期。

所以上面会产生:

14-04-2014 = 2
15-04-2014 = 3

这样做的最佳方法是什么?我尝试过使用array_count_values,但似乎无法使用关联数组。我收到以下错误:

Warning: array_count_values() [FUNCTION.ARRAY-COUNT-VALUES]: Can only count STRING and INTEGER values!

1 个答案:

答案 0 :(得分:1)

您可以先使用array_map转换数组。

$result = array_count_values(array_map(function ($var) {
  return $var['date'];
}, $refs));

对于php< 5.3:

$dates = array();

foreach ($refs as $ref) {
  $dates[] = $ref['date'];
}

$result = array_count_values($dates);

您也可以不使用array_count_values并直接在循环中进行计数。