Как я могу напечатать отсортированный массив, используя стандартный цикл for в PHP?(Не цикл по каждому элементу) - PullRequest
0 голосов
/ 03 октября 2018

Мне удалось отсортировать мой массив с помощью функции asort, и я знаю, что он работает, так как я использовал vardump для проверки.Моя проблема заключается в печати только элементов в отсортированном массиве с использованием цикла for.

        $month = array ('January', 'February', 'March', 'April', 'May', 'June', 'July','August','September', 'October', 'November', 'December');

        asort($month);

        for ($i=0; $i < count($month); $i++) { 
                echo $month[$i];
                echo "<br>\n";
            }

1 Ответ

0 голосов
/ 03 октября 2018

Используйте sort вместо asort.

asort поддерживает связь между ключами и значениями, но в этом случае вы итерируете ключи по порядку, поэтому вы получитезначения в порядке, даже если массив действительно отсортирован.

Если вы var_dump($month) после использования asort, вы увидите:

array(12) {
  [3]  => string(5) "April"
  [7]  => string(6) "August"
  [11] => string(8) "December"
  [1]  => string(8) "February"
  [0]  => string(7) "January"
  [6]  => string(4) "July"
  [5]  => string(4) "June"
  [2]  => string(5) "March"
  [4]  => string(3) "May"
  [10] => string(8) "November"
  [9]  => string(7) "October"
  [8]  => string(9) "September"
}

Индекс 0 по-прежнему ссылаетсяк январю, например, даже если это уже не первый элемент.

sort назначает новые ключи , поэтому цикл for будет работать правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...