Регулярные выражение
Здравствуйте! Подскажите, пожалуйста, как решить задачу. Есть текстовый файл с содержанием:
Австралия 123 Австрия 237 Азербайджан 57 Аландские острова 5 Албания 23 Алжир 4366 Надо вывести страны с числами в порядке убывания. Делаю так: $file = file('text.txt'); $digit=preg_replace("/[^0-9]/","",$file); rsort($digit); foreach($digit as $num) { $number=key(preg_grep('|'.$num.'|i',$file)); echo $file[$number]."<br />"; } Выводит: Алжир 4366 Австрия 237 Австралия 123 Азербайджан 57 Австралия 123 Азербайджан 57 Что не так? И как сделать правильно? |
Получите массив вложенных массивов строка, число, затем array_multisort().
|
Не соображу как.
|
$a = array_map(function($v) { return preg_split('/\s(?=\d)/', $v); }, file('text.txt', FILE_SKIP_EMPTY_LINES)); $n = array_column($a, 1); //версия РНР должна быть не ниже 5.5 array_multisort($n, SORT_NUMERIC, SORT_DESC, $a); $s = implode(array_map(function($v) { return implode(' ', $v); }, $a)); echo $s; А вообще, такое нужно держать в базе, или в файле, то готовым набором: array -> json. |
Отлично! То, что надо. Большое спасибо!
|
Часовой пояс GMT +3, время: 14:53. |