dongming0505 2016-08-30 14:54
浏览 19
已采纳

计算匹配的数组值

I'm currently developing a PHP leaderboard, which lists the most popular/matching locations in descending order (High to Low).

I'm able to display the locations, but unable to group/match the locations and display in the high to low order.

Could somebody please advice on how todo this, thank you.

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("
", $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:

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
)
  • 写回答

3条回答 默认 最新

  • duancong7358 2016-08-30 14:59
    关注
    $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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教