Necesito una función en php para ordenar una lista de palabras de acuerdo con un orden arbitrario.PHP ordenar por orden arbitrario
Cualquier palabra en la lista que no esté en mi orden predefinida debe ordenarse alfabéticamente al final de la lista.
Debajo está mi primer intento, no es ni elegante ni eficiente. ¿Puedes sugerir una mejor manera de lograr esto?
Gracias
public static function sortWords(&$inputArray){
$order=array("Banana","Orange", "Apple", "Kiwi");
sort($inputArray);
for($i=0;$i<count($inputArray));$i++){
$ac = $inputArray[$i];
$position = array_search($ac,$order);
if($position !== false && $i != $position){
$temp=$inputArray[$position];
$inputArray[$position]=$inputArray[$i];
$inputArray[$i]=$temp;
}
}
}
Puede ordenar las dos listas primero (NlogN + MlogM time), luego recorra las listas de coincidencias (tiempo N + M). Ya que debes ordenar de todos modos, esto es óptimo. – bdares
Sé que no importa su pregunta, pero tiene un error en la instrucción 'for', dos paréntesis de cierre en lugar de uno para' $ i
AJJ