Forum PHP 2017


(PHP 4, PHP 5, PHP 7)

arsortOrdena un array en orden inverso y mantiene la asociación de índices


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

Esta función ordena un array de manera que los índices del array mantienen su correlación con los elementos del array asociados.

Es usado principalmente cuando se ordenan arrays asociativos cuando el orden de los elementos es importante.


Si dos miembros se comparan como iguales, su orden relativo en el array oredenado será indefinido.



El array de entrada.


Se puede modificar el comportamiento del ordenado usando el parámetro opcional sort_flags, par más información vea sort().

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.


Ejemplo #1 Ejemplo de arsort()

= array("d" => "lemon""a" => "orange""b" => "banana""c" => "apple");
foreach (
$fruits as $key => $val) {
"$key = $val\n";

El resultado del ejemplo sería:

a = orange
d = lemon
b = banana
c = apple

Las frutas han sido ordenadas en orden inverso alfabético, se ha mantenido el índice asocidado con cada elemento.

Ver también

add a note add a note

User Contributed Notes 6 notes

morgan at anomalyinc dot com
17 years ago
If you need to sort a multi-demension array, for example, an array such as


and you have say, 100 teams here, and want to sort by "TeamPoints":

first, create your multi-dimensional array. Now, create another, single dimension array populated with the scores from the first array, and with indexes of corresponding team_id... ie
$foo[25] = 14
$foo[47] = 42
or whatever.
Now, asort or arsort the second array.
Since the array is now sorted by score or wins/losses or whatever you put in it, the indices are all hoopajooped.
If you just walk through the array, grabbing the index of each entry, (look at the asort example. that for loop does just that) then the index you get will point right back to one of the values of the multi-dimensional array.
Not sure if that's clear, but mail me if it isn't...
stephenakins at gmail dot com
14 days ago
I have two servers; one running 5.6 and another that is running 7.  Using this function on the two servers gets me different results when all of the values are the same. 


= json_decode('{"706":2,"703":2,"702":2,"696":2,"658":2}', true);





PHP 5.6 results:
Array ( [706] => 2 [703] => 2 [702] => 2 [696] => 2 [658] => 2 )
Array ( [658] => 2 [696] => 2 [702] => 2 [703] => 2 [706] => 2 )

PHP 7 results:
Array ( [706] => 2 [703] => 2 [702] => 2 [696] => 2 [658] => 2 )
Array ( [706] => 2 [703] => 2 [702] => 2 [696] => 2 [658] => 2 )
5 years ago
Needed to get the index of the max/highest value in an assoc array.
max() only returned the value, no index, so I did this instead.

($x);   // optional.
$key_of_max = key($x);   // returns the index.
jordancdarwin at googlemail dot com
9 years ago
A lot of people seem to trip up on this and ask me questions as to debugging. Bear in mind that this returns boolean, and does not return an array of affected items.

$array = array("One"=>1, "Three" => 3,"Two" =>2);

If successful, will return 1, and error if there is a string used. Useful to note so then people stop asking me :D
rodders_plonker at yahoo dot com
16 years ago
I was having trouble with the arsort() function on an older version of PHP which was returning an error along the lines of 'wrong perameter count for function arsort' when I tried to use a flag for numeric sorting (2/SORT_NUMERIC).
I figured, as I only wanted to sort integers, I could pad numbers from the left to a specific length with 0's (using the lpad function provided by in the notes at
A string sort then correctly sorts numerically (i.e. {30,2,10,21} becomes {030,021,010,002} not {30,21,2,10}) when echoing the number an (int)$string_name hides the leading 0's.

Made my day :).

5 years ago
If you are dealing with a multidimensional array you want to sort, then this might be helpfull:

function array_sort($arr){
$arr)) return $arr;
$arr as $k => $a){
arsort($arr); // could be any kind of sort
return $arr;
$arr[$k] = array_sort($a);
To Top