我有一个值为
的数组 Munnar, Cochin, Cochin, Cochin, Munnar, Cochin
我需要将值分组为
Munnar(1), Cochin(3), Munnar(1), Cochin(1)
。
如何循环数组以获得所需的输出。
答案 0 :(得分:4)
您可以这样做:
<?
$arrAux = array('Munnar', 'Cochin', 'Cochin', 'Cochin', 'Munnar', 'Cochin');
$count = 0;
$previous = $arrAux[0];
foreach ($arrAux as $name){
if ($previous === $name)
$count++;
else{
echo "{$previous}({$count})";
$previous = $name;
$count = 1;
}
}
//Print last item
echo "{$previous}({$count})";
?>
这应该做的工作,我认为你不想使用array_count_values
。这个功能已经在一分钟内完成,或许它可以改进:)
答案 1 :(得分:1)
试试这个
$arr = array('Munnar','Cochin','Cochin','Cochin','Munnar','Cochin');
$count = 0;
$previous=$arr[0];
$output = "";
foreach($arr as $key=>$val)
{
if($arr[$key]==$previous){
$count++;
}
else
{
$output .= $previous."(".$count.")";
$count=1;
$previous= $arr[$key];
}
}
if($previous==$arr[count($arr)-1])
$output.=$previous."(".$count.")";
echo $output;
答案 2 :(得分:0)
//print_r( array_count_values($yourarray));
$array=array_count_values($yourarray);
现在,您可以遍历$数组以获得所需的结果。
答案 3 :(得分:0)
试试这个
$array = array('Munnar','Cochin','Cochin','Cochin','Munnar','Cochin');
$vals = array_count_values($array);
echo 'No. of NON Duplicate Items: '.count($vals).'<br><br>';
foreach($vals as $key=>$val){
echo $key."(".$val."),";
}
输出:
Munnar(2),Cochin(4)
答案 4 :(得分:0)
我不完全了解PHP,但您可以尝试:
$array = array('Munnar','Cochin','Cochin','Cochin','Munnar','Cochin');
$prev = "";
$count = 0;
foreach($array as $key)
{
if(empty($prev))
{
$prev = $key;
$count = 1;
continue;
}
if($prev === $key)
{
$count++;
} else {
echo "($prev)($count)";
$prev = $key;
$count = 1;
}
}
echo "($prev)($count)";
答案 5 :(得分:0)
代码:
<?php
$key = '';
$_n = array();
$_a = array('Munnar', 'Cochin', 'Cochin', 'Cochin', 'Munnar', 'Cochin');
foreach ($_a as $_1) {
if ($key != $_1) {
$idx = count($_n[$_1]);
if ( isset($_n[$_1][$idx]) ) $idx += 1;
$_n[$_1][$idx] = 1;
$key = $_1;
}
else {
$idx = count($_n[$_1]) -1;
$_n[$_1][$idx] += 1;
}
}
foreach ($_n as $k1=>$v1) {
foreach ($v1 as $k2=>$v2) {
echo 'Key: '.$k1.', Index:'.$k2.', Value:'.$_n[$k1][$k2].'<br/>';
}
}
?>
结果
Key: Munnar Index:0 Value:1
Key: Munnar Index:1 Value:1
Key: Cochin Index:0 Value:3
Key: Cochin Index:1 Value:1
如果您的问题需要确切的订单
Munnar(1), Cochin(3), Munnar(1), Cochin(1)
您可以使用上面的内容并在最里面的循环中指定一个新的数组:
$new_arr[] = array( $k1 => $_n[$k1][$k2] );
警告:确保首次比较时起始键始终不同。