Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Чтение из csv и сортировка
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Чтение из csv и сортировка

Страниц (1): [1]
 

1. Steely - 08 Августа, 2016 - 22:58:08 - перейти к сообщению
Всем привет. Однако
Начал изучать php и тут такая проблемка не знаю как сделать.
Есть csv файл с четырьмя полями:
nickname, score, time, annotation
Словом надо как то вытащить данные из csv (ну это просто и я сделал)
отсортировать их по score (там числа сортировать надо по уменьшению) там где значения в score равные там отсортировать по увеличению уже time, тоже числа.
Не могу осилить буду благодарен за помощь.
2. andrewkard - 09 Августа, 2016 - 00:17:21 - перейти к сообщению
Steely
Сортировка должна помочь:
http://www.php.su/learnphp/datatypes/?array2
3. Steely - 10 Августа, 2016 - 22:07:07 - перейти к сообщению
Спасибо но...
Все равно не могу понять никак.
Сортировка это да, но там слишком много данных их как то надо собрать в список сначала?
Ой то есть в массив конечно.
Оставим пока сортировку по time, допустим нужна только сортировка по score.
4. andrewkard - 11 Августа, 2016 - 13:40:38 - перейти к сообщению
Steely пишет:
Оставим пока сортировку по time, допустим нужна только сортировка по score.

Вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $data = array(
  3.     array('key1'=>'v1','key2'=>'v2','score'=>'3','key4'=>'v4'),
  4.     array('key1'=>'v1','key2'=>'v2','score'=>'2','key4'=>'v4'),
  5.     array('key1'=>'v1','key2'=>'v2','score'=>'5','key4'=>'v4'),
  6.     array('key1'=>'v1','key2'=>'v2','score'=>'1','key4'=>'v4'),
  7.     array('key1'=>'v1','key2'=>'v2','score'=>'3','key4'=>'v4'),
  8. );
  9.  
  10. function cmp($a, $b){
  11.     if ($a['score'] == $b['score']) {
  12.         return 0;
  13.     }
  14.     return ($a['score'] < $b['score']) ? -1 : 1;
  15. }
  16. usort($data,'cmp');
  17.  
  18. echo '<pre>';
  19. print_r($data);
  20.  

 

Powered by ExBB FM 1.0 RC1