我经常搜索这个问题.但我无法在任何地方找到合适的解决方案.就像你做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)