我有这个数组
$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));
由于我正在对数组进行排序,然后在两种情况下输出为什么它给我不同的输出?
答案 0 :(得分:4)
为什么它会给我不同的输出?
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文档,尤其是返回值。