Задать вопрос

Вопрос по php, работа с массивом

Есть файл, допустим number.txt
В нем идет так
Andrey||123
Alexey||544
Sergey||845
Как сделать так чтоб они были отсортированны по числу справа?
  • Вопрос задан
  • 2414 просмотров
Подписаться 6 Оценить Комментировать
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
usort-том, определите свои функции сортировки и вперед.

Updated: позволил себе отрефакторить пример @Neutro
// загружаем данные в массив
$data = array_map(function ($row) {
    return explode('||', $row);
}, explode("\n", file_get_contents('number.txt'));

// сортируем
usort($data, function($a, $b) {
    return $a[1] - $b[1]);
});

// выгружаем обратно вы файл
file_put_contents('number.txt', implode("\n", array_map(function ($row) {
    return implode("||", $row);
}, $data);
Ответ написан
@Neutro
$data = file_get_contents('number.txt');
$lines = explode("\n",$data);
$numbers = array();
foreach($lines as $line) {
    $numbers[] = explode('||',$line);
}
usort($numbers,function($a,$b) {
    if($a[1] == $b[1]) {
        return 0;
    }
    return ($a[1] < $b[1]) ? -1 : 1;
});
$ret_val = '';
foreach($numbers as $number) {
    $ret_val .= $number[0].'||'.$number[1]."\n";
}
file_put_contents('number.txt',$ret_val);

Что бы инвертировать порядок измените знак неравенства в return.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы