/ count [duplicate]を持つ/配列グループ化値 - php、配列

countで配列をグループ化するvalus [duplicate] - PHP、配列

値を含む配列があります

Munnar, Cochin, Cochin, Cochin, Munnar, Cochin

値を次のようにグループ化する必要があります。

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

目的の出力を取得するために配列をループする方法

回答:

回答№1は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。この機能は数分で完成しましたので、おそらく改善することができます:)


回答№2の場合は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;

回答№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
//print_r( array_count_values($yourarray));

$array=array_count_values($yourarray);

これで、$配列をループ処理して目的の結果を得ることができます。


回答№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] );

警告:最初の比較で開始キーが常に異なることを確認してください。


答え№6の場合は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)";