@Ex1st

Как отсортировать данные из файла?

Из формы в файл записываются данные, допусти: 1::сергей::петров 2::иван::иванов 3::катя::воронина и тд..

Мне нужно данные из файла отсортировать по айди и записать (в бд, или другой файл). Как это можно сделать?

Пробую вытаскивать с помощью функции file(); но тогда в массиве только 1 элемент (это полная строка). Но даже если массив примет нужный вид, то как я смогу его отсортировать, если он не ассоциативный?
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
@generate
...
$file = '1::сергей::петров 2::иван::иванов 3::катя::воронина';

preg_match_all('/(?<id>\d+)::(?<name>[^::]*)::(?<surname>[^\d]*)/', $file, $match);

foreach ($match['id'] as $key => $value) {
  $newarr[$value] = ['name' => $match['name'][$key], 'surname' => $match['surname'][$key]];
}

print_r($newarr);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Flysink
Если вам просто нужно отсортировать по id, тогда:

$file = "1::сергей::петров 3::иван::иванов 2::катя::воронина";

$arr = explode(" ", $file);
usort($arr, function($a, $b) { return $a[0] > $b[0]; });
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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