我想计算我所拥有的关联数组中数据的出现次数。这是我的数组的输出:
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!
答案 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
并直接在循环中进行计数。