array_count_values的多维数组?

use*_*555 7 php

我经常搜索这个问题.但我无法在任何地方找到合适的解决方案.就像你做array_count_values()一个单维数组一样,如果你想要一个类似的解决方案,你会对多维数组做什么?

例如-

Array
(
    [0] => Array
        (
            [07/11] => 134
        )

    [1] => Array
        (
            [07/11] => 134
        )

    [2] => Array
        (
            [07/11] => 145
        )

    [3] => Array
        (
            [07/11] => 145
        )

    [4] => Array
        (
            [07/12] => 134
        )

    [5] => Array
        (
            [07/12] => 99
        )
)
Run Code Online (Sandbox Code Playgroud)

我想要的输出是 -

Date: 07/11, ID: 134, Count: 2
Date: 07/11, ID: 145, Count: 2
Date: 07/12, ID: 135, Count: 1
Date: 07/12, ID: 99, Count: 1
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

Use*_*407 14

使用该$arr数组的变量,您可以这样做:

$out = array();
foreach ($arr as $key => $value){
    foreach ($value as $key2 => $value2){
        $index = $key2.'-'.$value2;
        if (array_key_exists($index, $out)){
            $out[$index]++;
        } else {
            $out[$index] = 1;
        }
    }
}
var_dump($out);
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
    [07/11-134] => 2
    [07/11-145] => 2
    [07/12-134] => 1
    [07/12-99] => 1
)
Run Code Online (Sandbox Code Playgroud)

这是另一个将其生成为多维数组的版本:

$out = array();
foreach ($arr as $key => $value){
    foreach ($value as $key2 => $value2){
        if (array_key_exists($key2, $out) && array_key_exists($value2, $out[$key2])){
            $out[$key2][$value2]++;
        } else {
            $out[$key2][$value2] = 1;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
    [07/11] => Array
        (
            [134] => 2
            [145] => 2
        )

    [07/12] => Array
        (
            [134] => 1
            [99] => 1
        )

)
Run Code Online (Sandbox Code Playgroud)