PHP中sort($array)返回1而不是排序后的数组

14
我想对数组进行排序,但是当我将排序结果打印到屏幕上时,它会打印出 1。为什么它会打印出 1 而不是已排序数组的内容?
这是我的代码:
session_start();
if (isset($_POST))
{
     $_SESSION['total_elements'];
     $value1 = $_POST["username"];


     if (isset($_SESSION['total_elements']))
     {
         if (!empty($value1))
         {
             array_push($_SESSION['total_elements'], $value1);
         }
     }
}
$a = array();
$a = $_SESSION['total_elements'];
print_r($asceding_order) = sort($a); // printing 1

sort函数成功时返回true,失败时返回false... - Kamil Karkus
2个回答

42

sort 只会将数组排序,而不会返回它 :) 它会返回一个布尔值 TRUE,你的echo语句会将其显示为1。

echo $asceding_order= sort($a);   // wrong

正确的方式应该是

sort($a);
print_r($a);

以下是函数原型供参考:

bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )


2
仍然返回1的排序函数。 - Fernando Torres

0

@Fernando - 不要使用:

print_r($asceding_order) = sort($a); 

或者赋值的时候,只需要这样做:

$a = $_SESSION['total_elements'];
sort($a);

这将对数组进行排序并返回它。


它返回1是因为你正在打印sort方法返回的值。 Php中所有这些排序方法都返回布尔值,而不是排序后的数组。 现在的问题是如何获得结果,那么很简单,请参见下面的示例:`$arr = array(1,5,7,4,9,2,88);// 原始数组 echo "<pre>" print_r($arr);sort($arr);// 排序后的数组echo "<pre>" print_r($arr); `注意:您不需要将排序后的值存储在任何其他变量中,只需使用相同的数组名称即可。 - Ady

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接