我想排序一个数组,看起来像这样(按数字顺序,而不是1,10,11):
Array ( [0] => 1.jpg [1] => 10.jpg [2] => 11.jpg [3] => 111.jpg [4] => 12.jpg [5] => 12a.jpg [6] => 13.jpg [7] => 14.jpg [8] => 15.jpg [9] => 16.jpg [10] => 2.jpg [11] => 3.jpg [12] => 4.jpg [13] => 5.jpg [14] => 6.jpg [15] => 7.jpg [16] => 8.jpg [17] => 9.jpg )
当我使用sort()时,它只是变成"1"而不是一个排序数组。
代码:$this->pageLinks = sort($this->pageLinks); // the array is a property in a class
print_r($this->pageLinks); // want to display the sorted array here but it just returns 1
sort()
对数组进行就地排序。不要重新赋值。
正确的:
sort($this->pageLinks);
错误:
$this->pageLinks = sort($this->pageLinks);
数组通过引用传递给排序函数,因此不需要进行赋值操作。此外,sort()
函数不返回已排序的数组;它返回一个成功或失败标志,这就是为什么你在变量中得到一个1
(因为排序成功)。
sort($this->pageLinks);
其次,sort()
函数默认按字母顺序排序。通过传递SORT_NUMERIC
作为第二个参数,可以使它按数字顺序排序。考虑到PHP将字符串强制转换为整数的方式,这个可能在您的情况下适合您,但是由于您的值不是严格意义上的数字,您可能会发现需要手动进行转换。
如果是这种情况,那么您将需要使用usort()
而不是sort()
,并自己定义排序函数,其中比较两个值并返回排序顺序。关于usort()如何工作的更多信息,请参阅手册页。
你应该阅读sort()
的手册,你给它一个数组的引用,它会工作的。不需要重新赋值
sort($array);
和
$array = sort($array);