У меня есть массив:
Array
(
[0] => 20140929102023_taxonomies.zip
[1] => 20140915175317_taxonomies.zip
[2] => 20140804112307_taxonomies.zip
[3] => 20141002162349_taxonomies.zip
)
Я хотел бы упорядочить этот массив по первым 14 символам строк, которые представляют дату.
Я хотел бы массив, как это:
Array
(
[0] => 20140804112307_taxonomies.zip
[1] => 20140915175317_taxonomies.zip
[2] => 20140929102023_taxonomies.zip
[3] => 20141002162349_taxonomies.zip
)
Благодарю.
sort()
Функция с естественным алгоритмом сортировки должна дать вам результат, который вы ищете. Это так просто.
sort($array, SORT_NATURAL);
Это обновит существующий $array
переменная, вам не нужно хранить возврат sort
функция. Он просто возвращает истину или ложь успеха и неудачи.
Функция сортировки также обновит ключи, если по какой-то причине вам нужно сохранить ключи и просто обновить порядок, вы можете использовать asort()
.
asort($array, SORT_NATURAL);
PHP имеет множество способов сортировки массивов, вы можете найти руководство для этого Вот.
Нет необходимости использовать естественные алгоритмы сортировки. Нормальный Сортировать() даст желаемый эффект, так как он будет сравнивать каждую строку «начиная слева». Например, «20141002162349_taxonomies.zip» больше, чем «20140929102023_taxonomies», поскольку пятый символ (первая цифра месяца) — это 1 в первом и 0 во втором (и 1> 0, даже в строке) — сравнение работает с ASCII кодовые точки).
Так:
<?php
$array = array('20141002162349_taxonomies.zip', '20140929102023_taxonomies.zip', '20140804112307_taxonomies.zip', '20140915175317_taxonomies.zip');
sort($array);
var_dump($array);
Результат:
array(4) {
[0]=>
string(29) "20140804112307_taxonomies.zip"[1]=>
string(29) "20140915175317_taxonomies.zip"[2]=>
string(29) "20140929102023_taxonomies.zip"[3]=>
string(29) "20141002162349_taxonomies.zip"}