2017-06-09 5 views
0

重複する値を含む配列があります。私は、最も重複した値が最初に一列に現れるように配列をソートしたい。重複値に基づいて配列をソート

私のような出力たい:作業を習慣れているよう

rihanna 
rihanna 
rihanna 
rihanna 
taylor swift 
becca 
becca 
u2 
u2 
u2 

マイコード:

Rihanna 
U2 
Becca 
Taylor Swift 

データが含まれている私のファイルを

$input = file_get_contents('files'); 
$input = explode("\n", $input); 

$acv = array_count_values($input); 
$acv = arsort($acv); 
$result = array_keys($acv); 
print_r($acv); //Outputs Blank 
+0

これにはPHP関数array_uniqueを使用できます。 – Henkealg

+0

私は前に次のコードを試してみました: 'print_r(array_unique($ input));'戻り値:配列([0] => rihanna [4] => taylor swift [5] => becca [7] => u2 [10] =>) ' – irishwill200

+0

ソートをどのような基準で行いますか?重複をサニタイズした後にソートを行う必要があります。 – Henkealg

答えて

1

ここではあなたのソリューションです あなたの配列は:

です
$arr = array('rihanna','rihanna','rihanna','rihanna','taylor swift','becca','becca','u2','u2','u2'); 

$acv = array_count_values($input); 
// If need to remove element with count = 1 

foreach($acv as $key => $value) 
{ 
    echo $value; 
    if($value == 1) 
    { 
     unset($nArr[$key]); 
    } 
} 
//End 
$fArr = array_flip($acv); 

krsort($fArr); 
print_r(array_values($fArr)); 

//output 
Array 
(
    [0] => rihanna 
    [1] => u2 
    [2] => becca 
    [3] => taylor swift 
) 
+0

それは魅力的です!どうもありがとうございました。教育的な目的のために..「テイラー・スウィフト」を使わずに、上記のように表示する方法は?それで、最高の倍数で順番に表示しますが、レコードが1つしかない場合は結果を表示しませんか? – irishwill200

+0

更新された回答を確認する – Rahul

関連する問題