![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
12/05/2006, 12:53
|
![Avatar de hieloverde](http://static.forosdelweb.com/customavatars/avatar108452_1.gif) | | | Fecha de Ingreso: julio-2005 Ubicación: México, D.F
Mensajes: 467
Antigüedad: 19 años, 6 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 |