PHP-计算二维数组中的重复值,然后仅显示具有计数的唯一值 [英] PHP - Count duplicate values within two dimensional array, then display only unique values with the count
问题描述
我已经为此工作了几天,但仍然没有达到我想要的结果.在此方面的任何帮助将不胜感激……谢谢您.
我有一个存储在$ log中的多数组,当您使用print_r($ log)时,它会显示如下:
Array ( [0] => Array ( [0] => Red [1] => Steel )
[1] => Array ( [0] => Red [1] => Wood )
[2] => Array ( [0] => Blue [1] => Wood )
)
目前我有这个:
$counts = $log;
foreach ($log as $value) {
foreach ($value as $k => $v) {
if (!isset($counts[$k])) $counts[$k] = array();
if (!isset($counts[$k][$v])) $counts[$k][$v] = 0;
$counts[$k][$v] += 1;
}
}
foreach ($counts as $k => $v1) {
foreach ($v1 as $v => $count) {
echo "$v => $count <br />";
}
}
哪个显示:
0 => Red
1 => Steel
Red => 2
Blue => 1
0 => Red
1 => Wood
Steel => 1
Wood => 2
0 => Blue
1 => Wood
但是我真的希望最终结果是
<h2>Colors</h2>
Red => 2
Blue => 1
<h2>Materials</h2>
Steel => 1
Wood => 2
如果使用的是PHP >= 5.5
,则可以使用 array_count_values() :
$colors = array_count_values(array_column($log, 0));
$materials = array_count_values(array_column($log, 1));
或者,如果您不使用PHP >= 5.5
,则可以在PHP 4, 5
中使用:
$colors = $materials = array();
foreach ($log as $a){
$colors[] = $a[0];
$materials[] = $a[1];
}
$colors = array_count_values($colors);
$materials = array_count_values($materials);
I've been working on this for a couple days now... and still haven't been able to achieve my desired results. Any help would on this would be greatly appreciated... thank you in advance.
I have a multi-array stored in $log, which displays like this when you print_r($log):
Array ( [0] => Array ( [0] => Red [1] => Steel )
[1] => Array ( [0] => Red [1] => Wood )
[2] => Array ( [0] => Blue [1] => Wood )
)
Currently I have this:
$counts = $log;
foreach ($log as $value) {
foreach ($value as $k => $v) {
if (!isset($counts[$k])) $counts[$k] = array();
if (!isset($counts[$k][$v])) $counts[$k][$v] = 0;
$counts[$k][$v] += 1;
}
}
foreach ($counts as $k => $v1) {
foreach ($v1 as $v => $count) {
echo "$v => $count <br />";
}
}
Which Displays:
0 => Red
1 => Steel
Red => 2
Blue => 1
0 => Red
1 => Wood
Steel => 1
Wood => 2
0 => Blue
1 => Wood
But I'm really looking to have an end result of:
<h2>Colors</h2>
Red => 2
Blue => 1
<h2>Materials</h2>
Steel => 1
Wood => 2
If you are using PHP >= 5.5
, you can use array_column(), in conjunction with array_count_values():
$colors = array_count_values(array_column($log, 0));
$materials = array_count_values(array_column($log, 1));
Or, if you're not using PHP >= 5.5
, this will work in PHP 4, 5
:
$colors = $materials = array();
foreach ($log as $a){
$colors[] = $a[0];
$materials[] = $a[1];
}
$colors = array_count_values($colors);
$materials = array_count_values($materials);
Click here for sample use case that will work with either method.
这篇关于PHP-计算二维数组中的重复值,然后仅显示具有计数的唯一值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!