PHP 8.4.1 Released!

arsort

(PHP 4, PHP 5, PHP 7, PHP 8)

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

Descripción

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

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.

Nota:

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

Parámetros

array

El array de entrada.

sort_flags

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.

Ejemplos

Ejemplo #1 Ejemplo de arsort()

<?php
$fruits
= array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
arsort($fruits);
foreach (
$fruits as $key => $val) {
echo
"$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

User Contributed Notes 3 notes

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

$TeamInfo[$TeamID]["WinRecord"]
$TeamInfo[$TeamID]["LossRecord"]
$TeamInfo[$TeamID]["TieRecord"]
$TeamInfo[$TeamID]["GoalDiff"]
$TeamInfo[$TeamID]["TeamPoints"]

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...
-mo
up
11
stephenakins at gmail dot com
7 years 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.

<?php

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

print_r($list);

arsort($list);
echo
"<br>";

print_r($list);

?>

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 )
up
-1
FatBat
13 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.

<?php
reset
($x); // optional.
arsort($x);
$key_of_max = key($x); // returns the index.
?>
To Top