计算值在多维数组中出现的次数

时间:2016-02-05 16:18:31

标签: php arrays multidimensional-array count

我有一个简单的多维数组,如下所示。我试图计算阵列中每个值存在多少次(即关节炎=> 3)。我已经尝试了所有不同计数的PHP函数,但它总是返回一个数字,而不是一个键=>价值对。我也在寻找类似的问题,但没有什么能真正符合我的阵列的简单性。

array(3) {
      [0]=>
      array(1) {
        [0]=>
        string(0) "Arthritis"
      }
      [1]=>
      array(4) {
        [0]=>
        string(7) "Thyroid"
        [1]=>
        string(10) " Arthritis"
        [2]=>
        string(11) " Autoimmune"
        [3]=>
        string(7) " Cancer"
      }
      [2]=>
      array(6) {
        [0]=>
        string(7) "Anxiety"
        [1]=>
        string(10) " Arthritis"
        [2]=>
        string(11) " Autoimmune"
        [3]=>
        string(15) " Bone and Joint"
        [4]=>
        string(7) " Cancer"
        [5]=>
        string(8) " Candida"
      }

     }

<?php
print_r(count($items, COUNT_RECURSIVE));
?>

2 个答案:

答案 0 :(得分:2)

一种方法是使用子阵列上的array_merge()将其展平为单个维度,然后使用array_count_values()计算值:

$count = array_count_values(call_user_func_array('array_merge', $items));

答案 1 :(得分:1)

听起来你需要一个自定义循环:

$counts = array();
foreach ($items as $item) {
    foreach ($item as $disease) { // $disease here is the string like "Arthritis"
        if (isset($counts[$disease])) // $disease then become the key for the resulting array
            $counts[$disease]++;
        else
            $counts[$disease] = 1;
    }
}
print_r($counts);