PHP - Ayuda ordenar elementos de un array

 
Vista:

Ayuda ordenar elementos de un array

Publicado por fedein (8 intervenciones) el 09/06/2016 22:23:57
Hola a todos!!

Quisiera ordenar los elementos de un array de la siguiente forma:

Imaginad un array asociativo con los siguientes campos: [campo1, campo2, campo3,....,campoN]

Quiero hacer una primera ordenación del campo1 de manera desc y luego una desc del campo3 manteniendo el orden del campo 1 como prioritario. Pongo un ejemplo:

[peras, 3; peras, 5; uvas, 2; peras, 1; uvas, 5]

Resultado que quiero obtener:

uvas, 5
uvas, 2
peras, 5
peras, 3
peras, 1

Me estoy peleando con el array_multisort pero no lo consigo.

¿Alguna sugerencia?

Muchas gracias!!

Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Ayuda ordenar elementos de un array

Publicado por kip (877 intervenciones) el 09/06/2016 22:57:19
Hola, espero haberte entendido, aqui te dejo un codigo que ordena los valores del array de forma inversa:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$frutas = array('uvas'=>array(2,1,9,8),'peras' => array(4,3,5,6)); //creo el array bidimensional
echo '<b>ANTES DE asort()</b></br>'; //imprimo 
foreach ($frutas['uvas'] as $k => $v){
    echo 'Uvas '.$v.'</br>';
}
foreach ($frutas['peras'] as $k => $v){
    echo 'Peras '.$v.'</br>';
}
arsort($frutas['uvas']); //uso arsort() para cada fruta y asi ordenar de forma inversa sus valores
arsort($frutas['peras']);
echo '<b>DESPUES DE asort()</b></br>'; //imprimo 
foreach ($frutas['uvas'] as $k => $v){
    echo 'Uvas '.$v.'</br>';
}
foreach ($frutas['peras'] as $k => $v){
    echo 'Peras '.$v.'</br>';
}
?>

Este es el resultado:
Screenshot_179

Debes tener en cuenta que arsort() segun el manual:
Ordena un array en orden inverso y mantiene la asociación de índices
Es decir que cada indice luego de ejecutar arsort() seguira a su valor original de antes de ser ordenado.

Si no quieres mantener dichos indices ligados al valor correspondiente luego hacer el orden, puedes usar rsort.
http://php.net/manual/es/function.rsort.php

Espero te ayude, cualquier duda comentanos.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda ordenar elementos de un array

Publicado por fedein (8 intervenciones) el 09/06/2016 23:11:53
Mil gracias por la ayuda!!!

Lo solucioné de esta manera:

foreach ($data as $key => $row)
{
$aux1[$key] = $row['preciohora'];
$aux2[$key] = $row['nivel'];
}
array_multisort($aux2, SORT_DESC, $aux1, SORT_DESC, $data);

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar