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

izj3ouym  于 2023-02-03  发布在  PHP
关注(0)|答案(3)|浏览(154)

如果我像这样使用sort()

<?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] =〉图片1.png [1] =〉图片2.png [2] =〉图片10.png [3] =〉图片12.png)
但在PHP 7中,顺序相反:
数组([0] =〉图片12.图片[1] =〉图片10.图片[2] =〉图片2.图片[3] =〉图片1.图片)
那么为什么sort()在PHP 7中以相反的顺序使用SORT_NUMERIC呢?

quhf5bfb

quhf5bfb1#

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

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

数组([0] =〉图片12.png [1] =〉图片2.png [2] =〉图片10.png [3] =〉图片1.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

wljmcqd8

wljmcqd82#

数组1 =数组(“图片10.png”、“图片12.png”、“图片2.png”、“图片1.png”);
排序($array1,排序_自然);
打印_r($array1);
将给予结果数组([0] =〉图片1.png [1] =〉图片2.png [2] =〉图片10.png [3] =〉图片12.png)

ne5o7dgx

ne5o7dgx3#

Yu应该使用rsort()函数,它以“正确”的顺序显示数组的成员。

相关问题