为什么sort()在PHP 7中以相反的顺序使用SORT_NUMERIC?

问题描述 投票:2回答:2

如果我像这样使用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的顺序递增(如预期):

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

但是在PHP 7中,它的顺序是相反的:

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

那么为什么sort()在PHP 7中以相反的顺序使用SORT_NUMERIC呢?

php sorting quicksort
2个回答
1
投票

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

排序($数组1,SORT_NATURAL);

的print_r($数组1);

将给出结果数组([0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png)


0
投票

因为数组值不是严格的数值,所以在这种情况下PHP 7根本不排序。

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

数组([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);

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

请改用natsort()http://php.net/manual/en/function.natsort.php

© www.soinside.com 2019 - 2024. All rights reserved.