/ / Gruppierung von Valus mit count [duplicate] - php, Arrays

Array Gruppierung Valus mit count [duplizieren] - PHP, Arrays

Ich habe ein Array mit Werten

Munnar, Cochin, Cochin, Cochin, Munnar, Cochin

Ich muss die Werte als gruppieren

Munnar(1), Cochin(3), Munnar(1), Cochin(1).

Wie kann das Array geschleift werden, um die gewünschte Ausgabe zu erhalten.

Antworten:

4 für die Antwort № 1

Sie können so etwas tun:

<?
$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})";
?>

Dies sollte die Arbeit erledigen, ich denke, dass Sie nicht verwenden möchten array_count_values. Diese Funktion wurde in einer Minute erstellt und kann vielleicht verbessert werden :)


1 für die Antwort № 2

Versuche dies

  $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;

0 für die Antwort № 3

Versuche dies

$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."),";
}

Ausgabe :

Munnar(2),Cochin(4)

0 für die Antwort № 4
//print_r( array_count_values($yourarray));

$array=array_count_values($yourarray);

Jetzt können Sie das $ -Array durchlaufen, um das gewünschte Ergebnis zu erhalten.


0 für die Antwort № 5

Der Code:

<?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/>";
}
}
?>

Das Ergebnis

Key: Munnar Index:0 Value:1
Key: Munnar Index:1 Value:1
Key: Cochin Index:0 Value:3
Key: Cochin Index:1 Value:1

Wenn Sie eine genaue Bestellung benötigen, wie in Ihrer Frage

Munnar(1), Cochin(3), Munnar(1), Cochin(1)

Sie können das Obige verwenden und in der innersten Schleife einem neuen Array etwas wie folgt zuweisen:

$new_arr[] = array( $k1 => $_n[$k1][$k2] );

Achtung: Stellen Sie sicher, dass der Startschlüssel im ersten Vergleich immer unterschiedlich ist.


0 für die Antwort № 6

Ich weiß nicht perfekt PHP, aber Sie können versuchen:

$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)";