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]   

> Без описания
Shaman2
Отправлено: 14 Ноября, 2013 - 14:12:46
Post Id


Новичок


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


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




CODE (htmlphp):
скопировать код в буфер обмена
  1. Array ( [currency] => USD [prompt_address] => [rate] => Array ( [0] => Array ( [location] => Авдіївка, Відділення: вул. Чапаєва,[cost] => 10 ) [1] => Array ( [location] => Акимівка, Відділення: вул. Патріотів, 10 [cost] => ) [2] => Array ( [location] => Алушта, Відділення N1: вул. Леніна, 116 г (р-н ДАІ) [cost] => ) [3] => Array ( [location] => Алушта, Відділення N2 (до 30 кг): вул. Тавричеська, 3 [cost] => ) [4] => Array ( [location] => Алупка, Відділення N1 (до 30 кг на одне місце): вул. Західна, 23 [cost] => ) ) )


как этот массив отсортировать по названию города?

(Отредактировано автором: 14 Ноября, 2013 - 14:14:03)

 
 Top
imya
Отправлено: 14 Ноября, 2013 - 14:30:07
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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






-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
Shaman2
Отправлено: 14 Ноября, 2013 - 14:52:58
Post Id


Новичок


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


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




Извини, не сильно силен в php. Речь идет о функции для uasort, а можешь привести полный код функции?
 
 Top
imya
Отправлено: 14 Ноября, 2013 - 15:26:53
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




php.net пишет:


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
  3. ksort($fruits);
  4. foreach ($fruits as $key => $val) {
  5.     echo "$key = $val\n";
  6. }
  7. ?>

Результат:
a = orange
b = banana
c = apple
d = lemon


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
Shaman2
Отправлено: 14 Ноября, 2013 - 15:36:33
Post Id


Новичок


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


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




ksort($array) в моем случае вообще ничего не меняет Недовольство, огорчение
 
 Top
imya
Отправлено: 14 Ноября, 2013 - 15:39:46
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




Потому что у вас массив массивов.


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
Shaman2
Отправлено: 14 Ноября, 2013 - 15:58:27
Post Id


Новичок


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


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




imya пишет:
Потому что у вас массив массивов.


это я понял, но как его обработать правильно непонимаю. Поэтому прошу подсказать

(Отредактировано автором: 14 Ноября, 2013 - 15:58:47)

 
 Top
teddy
Отправлено: 14 Ноября, 2013 - 16:05:40
Post Id


Участник


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


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




Прогоните через for ваш массив, так как каждый элемент массива является в свою очередь массивом, при каждой интерации применяйте функцию для сортировки к каждому вложенному массиву
 
 Top
Deonis
Отправлено: 14 Ноября, 2013 - 18:14:41
Post Id



Посетитель


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


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




Тут надо использовать "натуральную сортировку" (natural order):
PHP:
скопировать код в буфер обмена
  1. usort($array['rate'], function($a,$b){
  2.     return strnatcmp($a['location'],$b['location']);
  3. });

Работу можно глянуть тут.

(Отредактировано автором: 14 Ноября, 2013 - 18:16:13)

 
 Top
Shaman2
Отправлено: 15 Ноября, 2013 - 00:25:51
Post Id


Новичок


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


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




Deonis пишет:
Тут надо использовать "натуральную сортировку" (natural order):
PHP:
скопировать код в буфер обмена
  1. usort($array['rate'], function($a,$b){
  2.     return strnatcmp($a['location'],$b['location']);
  3. });

Работу можно глянуть тут.


Демо видел, действительно работает. Пытаюсь применить код к своим "реалиям" (у меня квадратные скобки в массиве, кавычки использовать немогу), пишу вот так:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. usort($values[rate], function($a,$b){
  3.     return strnatcmp($a[location],$b[location]);
  4. });
  5.  


скрипт висит. Налицо какая-то проблема с синтаксисом, подскажите где именно?
(Добавление)
И в Вашем примере тоже ошибка: индексы 0,1,2,3,4 мне нельзя смещать, это ид строк в базе
 
 Top
Deonis
Отправлено: 15 Ноября, 2013 - 00:59:46
Post Id



Посетитель


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


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




Shaman2 пишет:
у меня квадратные скобки в массиве, кавычки использовать немогу
Не понял Даже не знаю, что и сказать на это... Это вы решили, после того, как вывели массив на экран через print_r() или var_dump()? Дабы определиться, сделайте следующее: упакуйте ваш массив в json-строку и покажите. Т.е. таким образом:

Shaman2 пишет:
И в Вашем примере тоже ошибка
Поправочка - это не ошибка в моем примере, а вы не указали в вопросе, что сортировка нужна с сохранением ключей. Но и это не проблема. Замените usort() на uasort().
 
 Top
Ch_chov
Отправлено: 15 Ноября, 2013 - 05:18:09
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


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




Deonis пишет:
у меня квадратные скобки в массиве, кавычки использовать немогу

Вы точно на php пишете?
 
 Top
Hapson
Отправлено: 15 Ноября, 2013 - 08:29:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


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

[+]


Deonis
Не надо var_export() попробовать - он может использовать кавычки Улыбка


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 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