我有这个数组
$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));
既然我正在排序数组,然后在两种情况下输出,为什么它给我不同的输出?
为什么它给我不同的输出?
查看函数文档:
bool arsort (array &$array [, int $sort_flags = SORT_REGULAR])
这个函数对数组进行排序,使数组的下标保持它们的值与所关联的数组元素的相关性。
成功时返回TRUE,失败时返回FALSE。
它使用对数组的引用,对其进行排序,然后在第一种情况下输出排序后的数组。
在第二种情况下,您将输出函数的结果-它返回TRUE,表明排序成功。
输出1
的原因是arsort()
返回一个布尔值:
成功返回TRUE,失败返回FALSE。
当将布尔值转换为字符串(称为类型杂耍)时,将其转换为以下两个值之一:
-
TRUE
被转换成字符串"1"
和 -
FALSE
变成空字符串,""
如果你想显示数组的内容,你应该先对数组进行排序,然后,然后输出它:
arsort($arr);
print_r($arr);
Asort
在成功时返回true,在失败时返回false,您正在打印排序结果,在php中Asort
更改您正在排序的变量(有副作用),当打印Asort($arr)
时,您只要求打印函数的返回值,在这种情况下为true。
请考虑阅读arsort()函数的PHP文档,特别是返回值