PHP数组排序和输出行为

时间:2014-08-06 09:02:29

标签: php arrays sorting

我有这个数组

$arr = array('key1' => 1, 'key3' => 3, 'key2' => 2);

现在我想按照值的降序对数组进行排序。所以我尝试了以下

arsort($arr);
print_r($arr);

输出

Array(
    [key3] => 3
    [key2] => 2
    [key1] => 1 
)

但是当我尝试以下内容时,我得到的输出为1

print_r(arsort($arr));

由于我正在对数组进行排序,然后在两种情况下输出为什么它给我不同的输出?

4 个答案:

答案 0 :(得分:4)

  

为什么它会给我不同的输出?

查看function documentation

  

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

     

此函数对数组进行排序,使数组索引保持其状态   与它们相关的数组元素的相关性。

     

成功时返回TRUE,失败时返回FALSE。

它使用对数组的引用,对它进行排序,然后在第一种情况下输出已排序的数组。

在第二种情况下,您输出函数的结果 - 它返回TRUE,表示排序成功。

答案 1 :(得分:0)

成功时

Asort返回true,失败时返回false,打印排序结果,在php Asort中更改正在排序的变量(有副作用),打印时Asort($arr)你只是要求打印函数的返回值,在这种情况下是真的。

答案 2 :(得分:0)

输出1的原因是因为arsort() returns a boolean value

  

返回值

     

成功时返回 TRUE ,失败时返回 FALSE

当一个布尔值变成一个字符串(称为type juggling)时,它是turned into either of two values

  • TRUE变为字符串"1"
  • FALSE变为空字符串""

如果要显示数组的内容,首先应该对数组进行排序,然后输出它:

arsort($arr);
print_r($arr);

答案 3 :(得分:0)

请考虑阅读arsort()函数的PHP文档,尤其是返回值。