Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Сортировка массива PHP по заданном порядке по значениям

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

GMargarita



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Необходимо отсортировать массив с названиями стран в определенном поряке: Россия, Украина, Казахстан, Беларуссия, Армения, Грузия, Азербайджан. Т.е. не по какой-то очевидной логике, а именно вот так как указано.
 
При этом в исходном массиве могут быть как все эти значения, так и не все, и расположены эти значения каждый раз по-разному.
 
Помогите, плз

Всего записей: 3 | Зарегистр. 04-11-2014 | Отправлено: 15:42 12-11-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GMargarita
ну, к примеру, так

Код:
header('Content-Type: text/html; charset=utf-8');
   
$arr = preg_split('/[,\s]+/u', 'Россия, Украина, Казахстан, Беларуссия, Армения, Грузия, Азербайджан');
 
$random = $arr;
 
shuffle($random);
 
print_r($random);
 
$arr = array_flip($arr);
 
usort($random, function($e1, $e2) use($arr) {
   return @$arr[$e1] > @$arr[$e2];  
});
 
print_r($random);

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 20:35 12-11-2014
GMargarita



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо за вариант!
 
Только у меня этот код выдает ошибку - Parse error: syntax error, unexpected T_FUNCTION
на этой строчке:
usort($random, function($e1, $e2) use($arr) {
 
Попытки самостоятельно исправить не увенчались успехом((
 
А можете, пожалуйста, еще откомментить что и зачем передается в эту ф-цию, а то не совсем понимаю:
usort($random, function($e1, $e2) use($arr) {
return @$arr[$e1] > @$arr[$e2];
});

Всего записей: 3 | Зарегистр. 04-11-2014 | Отправлено: 23:22 13-11-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GMargarita

Цитата:
Parse error: syntax error, unexpected T_FUNCTION

у вас php ниже 5.3, обновитесь.
 

Цитата:
зачем передается в эту ф-цию, а то не совсем понимаю

передаются 2 элемента из массива и по их индексу в изначальном массиве (с заданной сортировкой) опеределяется куда они должны быть перемещены.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 01:24 14-11-2014
GMargarita



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Да, на другой версии php все получилось! Ура))
Спасибо Вам большое!

Всего записей: 3 | Зарегистр. 04-11-2014 | Отправлено: 11:31 14-11-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GMargarita
а можно и еще проще, без фактической сортировки
 

Код:
$random = array_intersect($arr, $random);  

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 11:42 14-11-2014 | Исправлено: Mavrikii, 11:44 14-11-2014
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Сортировка массива PHP по заданном порядке по значениям


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru