Сортировка массивов PHP по метке времени

У меня проблема, упорядочивая массив так, как я хочу.

Это пример вывода моего массива: http://pastebin.com/GJNBmqL7

Данные поступают из разных баз данных сразу, поэтому я ограничен тем, как я помещал данные в массив.

[2] всегда содержит временную метку linux. Теперь я хочу, чтобы весь массив был упорядочен по этой метке времени с наименьшим значением.

Как я могу это сделать?

здесь пример array_multisort :

foreach ($array as $key => $node) { $timestamps[$key] = $node[2]; } array_multisort($timestamps, SORT_ASC, $array); 

используйте usort, который принимает пользовательскую функцию для сортировки массивов:

usort

ваша функция может выглядеть примерно так:

 function cmp($a, $b) { if ($a[2] == $b[2]) { return 0; } return ($a[2] < $b[2]) ? -1 : 1; } 

Вы можете сделать это просто с помощью пользовательского сортировки. Поэтому, если ваша дата-метка всегда указана в индексе 2:

 function sortArray($a1, $a2){ if ($a1[2] == $a2[2]) return 0; return ($a1[2] > $a2[2]) ? -1 : 1; } usort($array, "sortArray"); 

usort проще всего работать, но вы также можете проверить array_multisort .

Используйте usort и создайте свою собственную функцию, http://php.net/manual/en/function.usort.php

 function cmp($a, $b) { if ($a[2] == $b[2]) { return 0; } return ($a[2] < $b[2]) ? -1 : 1; } $data = array( /* your data */ ); usort($data, "cmp"); 

Возможно, было бы проще вставить данные в одну временную таблицу, затем SELECT, с отметкой ORDER BY

Этого можно достичь с помощью следующего кода.

 usort($variable, function ($a, $b) { if ($a['timestamp'] == $b['timestamp']) { return 0; } return ($a['timestamp'] < $b['timestamp']) ? 1 : -1; 

});

Это приведет к сортировке массива переменной $, предполагая, что метка времени имеет значение $ variable [0] ['timestamp']; Переменная $ [0] [ 'Отметка времени']; и так далее.