Почему sort () использует SORT_NUMERIC в обратном порядке в PHP 7? - PullRequest
0 голосов
/ 19 февраля 2019

Если я использую sort(), используя SORT_NUMERIC, например:

<?php

$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");

sort($array1, SORT_NUMERIC);

print_r($array1);

Вывод в PHP 5.5 / 5.6 в порядке возрастания (как и ожидалось):

Array ([0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png)

Но в PHP 7 этов обратном порядке:

Array ([0] => img12.png [1] => img10.png [2] => img2.png [3] => img1.png)

Так почему sort() использует SORT_NUMERIC в PHP 7 в обратном порядке?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

$ array1 = array ("img10.png", "img12.png", "img2.png", "img1.png");

sort ($ array1, SORT_NATURAL);

print_r ($ array1);

даст результат Array ([0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png)

0 голосов
/ 19 февраля 2019

Поскольку значения массива не являются строго числовыми, в этом случае PHP 7 вообще не сортирует.

<?php
$array1 = $array2 = array("img12.png", "img2.png", "img10.png", "img1.png");
sort($array1, SORT_NUMERIC);
print_r($array1);

Array ([0] => img12.png [1] =>img2.png [2] => img10.png [3] => img1.png)

<?php
$array1 = $array2 = array("12", "2", "10", "1");
sort($array1, SORT_NUMERIC);
print_r($array1);

Array ([0] => 1 [1] => 2 [2] => 10 [3] => 12)

Используйте взамен natsort().http://php.net/manual/en/function.natsort.php

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