Регулярные выражение
Здравствуйте! Подскажите, пожалуйста, как решить задачу. Есть текстовый файл с содержанием:
Австралия 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, время: 06:54. |