Естественный порядок необходим для списка каталогов - PullRequest
0 голосов
/ 14 марта 2019

Я новичок в PHP, и мне нужна помощь, чтобы этот бит работал.Я пытаюсь, чтобы папки каталогов были перечислены на странице PHP.Пока это работает, но список папок появляется в «Стандартном» порядке.Мне нужно это в «естественном» порядке, но я не могу заставить его работать.

Стандартный заказ:

  • 1
  • 10
  • 11
  • 2
  • ...

Естественный порядок:

  • 1
  • 2
  • 10
  • 11
  • ...

Вот что у меня есть:

<?php

$TheFolder = '';

foreach(glob($TheFolder.'*', GLOB_ONLYDIR) as $dir) {
    $dir = str_replace($TheFolder, '', $dir);
    echo $dir , "<br>";
    //echo $dir;
}

?>

Я пытался использовать natsort раньше, но не мог понять это.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Вы можете использовать функцию sort() с включенным флагом SORT_NATURAL;

Вот так:

$array = [1,10,11,12,4,30];
sort($array, SORT_NATURAL);
print_r($array); // Array ( [0] => 1 [1] => 4 [2] => 10 [3] => 11 [4] => 12 [5] => 30 )

Так что-то вроде этого должно работать:

$directoriesArray = glob($TheFolder.'*', GLOB_ONLYDIR);
sort($directoriesArray, SORT_NATURAL);
foreach($directoriesArray as $dir){
//.. str_replace and echo $dir
}

Подробнее о функции sort () здесь

0 голосов
/ 14 марта 2019

Спасибо Мостафе Мохсену, который указал мне правильное направление.

Принимая решение Мостафы за основу, потребовалась небольшая модификация, поскольку она по-прежнему выдавала ошибку.

Это последний код, работающий нормально:

<?php

$directoriesArray = glob('*', GLOB_ONLYDIR);
sort($directoriesArray, SORT_NATURAL);
foreach($directoriesArray as $dir){
    echo $dir , "<br>";
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...