Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/05/2006, 12:53
Avatar de hieloverde
hieloverde
 
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 8 meses
Puntos: 5
Pues bien, la función me quedo así, consiste en ordenar por dos factores (el indice y el valor):

Código PHP:
<?
function Prioridad($arreglo)
{
    function 
OrdenarFactores($ar1$ar2)
    {
        if (
$ar1['a']<$ar2['a']) { return -1; }
        else if (
$ar1['a']>$ar2['a']) { return 1; }
        if (
$ar1['b']<$ar2['b']) { return -1; }
        else if (
$ar1['b']>$ar2['b']) { return 1; }
        return 
0;
    }    
        
    foreach(
$arreglo as $i=>$v)
    {
        
$arreglo_factores[$i]=array('a'=>$v,'b'=>$i);
    }
        
    
uasort($arreglo_factores'OrdenarFactores'); 
    unset(
$arreglo);
    foreach(
$arreglo_factores as $i=>$v)
    {
        
$arreglo[$i]=$v['a'];
    }
        
    return 
$arreglo;
}
?>


En el siguiente ejemplo les muestro como usarla:

Código PHP:
<?
/* Array de ejemplo */
$array[0]=8;
$array[1]=8;
$array[2]=2;
$array[3]=10;
 
/* Ordenamos el array por los dos factores usando la funcion 'Prioridad()' */
$array=Prioridad($array); 
   
/* Lo mostramos en pantalla */
foreach($array as $i=>$v)
{
    echo 
'array['.$i.']='.$v.'<br>';
}
?>


El resultado da justamente esto:

array[2]=2
array[0]=8
array[1]=8
array[3]=10


Como podran darse cuenta al encontrar valores iguales simplemente los sube o los baja de posicion pero nunca los invertira como sucede con asort()

Espero que le sirva a alguien mas

Saludos,
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico