Descrição
void
usort
( array array, string cmp_function)
Essa
função
irá
ordenar
um
array
pelos
valores
usando
uma
função
de
classificação
definida
pelo
usuário
.
Se
o
array
precisar
ser
ordenado
utilizando
um
critério
não
trivial
,
você
deve
usar
essa
função
.
A
função
de
comparação
deve
retornar
um
inteiro
menor
,
igual
ou
maior
que
zero
se
o
primeiro
argumento
for
considerado
respectivamente
menor
,
igual
,
ou
maior
que
o
segundo
.
Nota
:
Se
dois
elementos
são
considerados
iguais
,
a
ordem
deles
fica
indefinida
no
array
resultante
.
Até
o
PHP
4.0.6
as
funções
definidas
pelo
usuário
manteriam
a
ordem
original
desses
elementos
,
mas
com
o
novo
algoritmo
de
ordenação
introduzido
no
4.1.0
esse
não
é
o
caso
,
pois
não
existe
solução
para
fazer
isso
de
modo
eficiente
.
Exemplo
1
.
Exemplo
de
usort(
)
1
;
}
$a
=
array
(3
,
2
,
5
,
6
,
1)
;
usort
($a
,
"cmp")
;
while
(list
($chave
,
$valor
)
=
each
($a)
)
{
echo
"$chave
:
$valor\n"
;
}
|
|
Esse
exemplo
mostraria
:
Nota
:
Obviamente
que
nesse
caso
trivial
a
função
rsort(
)
seria
mais
apropriada
.
Exemplo
2
.
Exemplo
de
usort(
)
usando
um
array
multi-dimensional
function
cmp
(
$a
,
$b
)
{
return
strcmp($a["fruta"]
,
$b["fruta"])
;
}
$frutas[0]["fruta"
]
=
"limoes"
;
$frutas[1]["fruta"
]
=
"abacaxis"
;
$frutas[2]["fruta"
]
=
"goiabas"
;
usort($frutas
,
"cmp")
;
while
(list
($chave
,
$valor
)
=
each
($frutas)
)
{
echo
"\$frutas[$chave]
:
"
.
$valor["fruta"
]
.
"\n"
;
}
|
|
Na
ordenação
de
um
array
multi-dimensional
,
$a
e
$b
contêm
referências
para
o
primeiro
índice
do
array
.
Esse
exemplo
mostraria
:
$fruits[
0]
:
abacaxis
$fruits[1]
:
goiabas
$fruits[2
]
:
limoes
|
Nota
:
Ao
invés
de
um
nome
de
função
,
um
array
contendo
uma
referência
de
objeto
e
ao
nome
de
método
também
pode
ser
fornecidos
.
Exemplo
3
.
Exemplo
de
usort(
)
usando
uma
função
membro
de
um
objeto
class
TestObj
{
var
$name
;
function
TestObj($name
)
{
$this
-
name
=
$name
;
}
/
*
Essa
é
a
função
estática
de
comparação
*
/
function
cmp_obj($a
,
$b
)
{
$al
=
strtolower($a
-
name)
;
$bl
=
strtolower($b
-
name)
;
if
($al
==
$bl
)
return
0
;
return
($al
$bl
)
?
+1
:
-1
;
}
}
$a[
]
=
new
TestObj("c")
;
$a[
]
=
new
TestObj("b")
;
$a[
]
=
new
TestObj("d")
;
uasort($a
,
array
("TestObj"
,
"cmp_obj"))
;
foreach
($a
as
$item
)
{
print
$item
-
name
."\n"
;
}
|
|
Esse
exemplo
mostraria
:
Veja
também
uasort(
)
,
uksort(
)
,
sort(
)
,
asort(
)
,
arsort(
)
,
ksort(
)
,
natsort(
)
,
e
rsort(
)
.