2016-08-30 13 views
0

私は現在、PHPのリーダーボードを開発しています。これは、最も人気のある/マッチングする場所を降順(高〜低)でリストしています。配列の値を一致させることを

私は場所を表示することはできますが、場所をグループ化/一致させたり、高低の順序で表示することはできません。

誰かがこの方法をアドバイスしてください、ありがとうございます。

PHP:

function parse_csv($file, $options = null) { 
    $delimiter = empty($options['delimiter']) ? "," : $options['delimiter']; 
    $to_object = empty($options['to_object']) ? false : true; 
    $str = file_get_contents($file); 
    $lines = explode("\n", $str); 
    $field_names = explode($delimiter, array_shift($lines)); 
    foreach ($lines as $line) { 
    if (empty($line)) continue; 
    $fields = explode($delimiter, $line); 
    $_res = $to_object ? new stdClass : array(); 
    foreach ($field_names as $key => $f) { 
     if ($to_object) { 
     $_res->{$f} = $fields[$key]; 
     } else { 
     $_res[$f] = $fields[$key]; 
     } 
    } 
    $res[] = $_res; 
    } 
    return $res; 
} 
$arr_csv = parse_csv("/data.csv"); 
$array = array(); 
for ($i = 0; $i < count($arr_csv); ++$i) { 
    array_push($array, $arr_csv[$i]["Location Name"]); 
} 
echo '<pre>'; 
print_r($array); 
echo '</pre>'; 

アレイ:

Array 
(
    [0] => Bedford Sixth Form 
    [1] => Tokko Youth Space 
    [2] => WS Training 
    [3] => WS Training 
    [4] => University Technical College 
    [5] => Bedford Academy 
    [6] => Bedford College 
    [7] => Bedford College 
    [8] => Bedford College 
    [9] => Bedford College 
    [10] => Bedford College 
    [11] => Bedford College 
    [12] => Bedford College 
    [13] => Bedford College 
    [14] => Bedford College 
    [15] => Bedford College 
    [16] => Bedford College 
    [17] => Bedford College 
    [18] => Bedford College 
    [19] => Bedford College 
    [20] => Bedford College 
) 
+0

予想される結果はありますか? – Naruto

答えて

0
$array = array(); 
for ($i = 0; $i < count($arr_csv); ++$i) { 
    if(!isset($array[$arr_csv[$i]["Location Name"]])){ 
     $array[$arr_csv[$i]["Location Name"]]=0; 
    } 
    $array[$arr_csv[$i]["Location Name"]]++; 
} 
asort($array); 
$tmp=array(); 
foreach($array as $k=>$v){ 
    $tmp[]="$v. $k"; 
} 
$array=$tmp;//or with array_reverse($tmp); 
+0

これは動作しますが、低から高へ、高低ではない - また、どのように取得してその場所の横に量を表示するのですか?15 Bedford College 2. WS Training –

+0

@Adamは '$ result = array_reverse $ input); '注文を変更するには – JustOnUnderMillions

+0

場所の隣に「Adamの金額」という新しい質問がありますが、私の回答が更新されます – JustOnUnderMillions

0

あなたが使用することができますarray_count_values($配列)

$your_result = array_count_values($your_array); 

var_dump($your_result); 
0

array_count_values()を使用して出現を取得し、この情報を使用して値を必要な方法でソートすることができます。

関連する問題