/ / Valeurs de groupement de tableaux avec nombre [dupliquer] - php, tableaux

Valeurs de groupement de tableaux avec nombre [dupliquer] - php, tableaux

J'ai un tableau avec des valeurs

Munnar, Cochin, Cochin, Cochin, Munnar, Cochin

J'ai besoin de regrouper les valeurs comme

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

Comment peut boucler le tableau pour obtenir la sortie souhaitée.

Réponses:

4 pour la réponse № 1

Vous pouvez faire quelque chose comme ça:

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

Cela devrait faire le travail, je pense que vous ne voulez pas utiliser array_count_values. Cette fonction a été créée en une minute, alors peut-être qu’elle peut être améliorée :)


1 pour la réponse № 2

Essaye ça

  $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 pour la réponse № 3

essaye ça

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

Sortie:

Munnar(2),Cochin(4)

0 pour la réponse № 4
//print_r( array_count_values($yourarray));

$array=array_count_values($yourarray);

Vous pouvez maintenant parcourir le tableau $ pour obtenir le résultat souhaité.


0 pour la réponse № 5

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

Le résultat

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

Si vous avez besoin d'un ordre exact comme dans votre question

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

Vous pouvez utiliser ce qui précède et attribuer à la boucle la plus interne un nouveau tableau comme ceci:

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

Mise en garde: Assurez-vous que la clé de départ sera toujours différente en comparaison initiale.


0 pour la réponse № 6

Je ne connais pas parfaitement PHP, mais vous pouvez essayer:

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