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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сортировка массива

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
chti1955
Отправлено: 19 Февраля, 2016 - 22:43:24
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




Здравствуйте все!
Ищу помощи в нелёгком вопросе!
Есть массив:

PHP:
скопировать код в буфер обмена
  1. array(3) {
  2.   [0]=>
  3.   array(2) {
  4.     ["name"]=> string(5) "Имя 0"
  5.     ["time"]=> string(16) "2016-02-18 12:45"
  6.   }
  7.   [1]=>
  8.   array(2) {
  9.     ["name"]=> string(5) "Имя 2"
  10.     ["time"]=> string(16) "2016-02-18 12:44"
  11.   }
  12.   [2]=>
  13.   array(2) {
  14.     ["name"]=> string(5) "Имя 1"
  15.     ["time"]=> string(16) "2016-02-18 12:47"
  16.   }
  17. }


Как сделать сортировку по полю time?
Спасибо большое!

(Отредактировано автором: 19 Февраля, 2016 - 22:51:55)

 
 Top
IllusionMH
Отправлено: 20 Февраля, 2016 - 05:10:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




chti1955, используйте usort и сравнивайте элементы time обоих передаваемых значений в функции.
 
 Top
chti1955
Отправлено: 20 Февраля, 2016 - 10:36:21
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




[quote=IllusionMH][/quote]
Спасибо, попробовала, не вышло...
Отдаёт пустую строку почему-то Недовольство, огорчение
Попробовала погуглить с подобной функцией, именно с моим массивом почему то пустая строка получается..
 
 Top
chti1955
Отправлено: 20 Февраля, 2016 - 14:06:40
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




Ищу помощи, сама не разберусь..
 
 Top
andrewkard
Отправлено: 20 Февраля, 2016 - 14:44:47
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




chti1955 пишет:
сама не разберусь

PHP:
скопировать код в буфер обмена
  1.  
  2. function cmp($a, $b){
  3.     if ($a['time'] == $b['time']) {
  4.         return 0;
  5.     }
  6.     return ($a['time'] < $b['time']) ? -1 : 1;
  7. }
  8.  
  9. usort($arr, "cmp");
  10.  
 
 Top
chti1955
Отправлено: 20 Февраля, 2016 - 18:39:28
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




Не работает, отдаёт null почему-то Недовольство, огорчение
 
 Top
MAXUS
Отправлено: 20 Февраля, 2016 - 22:13:47
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




chti1955 пишет:
Здравствуйте все!
Ищу помощи в нелёгком вопросе!

PHP:
скопировать код в буфер обмена
  1. //Дано
  2. $a=array(
  3.   0=>array(
  4.     "name"=> "Имя 0",
  5.     "time"=> "2016-02-18 12:45"
  6.   ),
  7.   1=>array(
  8.     "name"=> "Имя 2",
  9.     "time"=> "2016-02-18 12:44"
  10.   ),
  11.   2=>array(
  12.     "name"=> "Имя 1",
  13.     "time"=> "2016-02-18 12:47"
  14.   )
  15. );
  16. //Сортируем
  17. foreach($a as $b) $c[$b['time']]=$b;
  18. ksort($c);
  19. $a=array_values($c);
  20. //Выводим-проверяем
 
 Top
andrewkard
Отправлено: 22 Февраля, 2016 - 11:19:22
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




andrewkard пишет:
Не работает, отдаёт null почему-то


PHP:
скопировать код в буфер обмена
  1.  
  2. $arr = array (
  3.     2=>array(
  4.       'name' => 'Имя 0' ,
  5.       'time' =>  '2016-02-18 12:45',
  6.         ),
  7.     3 => array (
  8.       'name' => 'Имя 2' ,
  9.       'time' =>  '2016-02-18 12:44',
  10. ),
  11.     4 => array (
  12.         'name' => 'Имя 3' ,
  13.         'time' =>  '2016-02-18 12:43',
  14.     )
  15. );
  16.  
  17.  
  18. function cmp($a, $b){
  19.     if ($a['time'] == $b['time']) {
  20.         return 0;
  21.     }
  22.     return ($a['time'] < $b['time']) ? -1 : 1;
  23. }
  24.  
  25. usort($arr, "cmp");
  26. echo '<pre>';
  27. print_r($arr);
  28.  
  29.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB