Sé que hay funciones natsort() y natcasesort() en php para ordenar los elementos de la matriz en orden natural. Estoy tratando de ordenar los siguientes artículos.ordenando una matriz php alfanumérica
array[0]= '10. xyz';
array[1]= '13. xyz';
array[2]= '2. xyz';
array[3]= '1a. xyz';
array[4]= '6. xyz';
array[5]= '1b. xyz';
array[6]= '4a. xyz';
array[7]= '4b. xyz';
ahora si aplico natsort(), '10 .. 'y '13 ..' están colocados por encima de '1a ..'. ¿Cómo puedo hacer que mi código php piense que '10 .. 'es mayor que' 1a ... 'y' 1a ... 'debería estar en la parte superior? la salida correcta en mi caso particular es:
'1a. xyz';
'1b. xyz';
'2. xyz';
'4a. xyz';
'4b. xyz';
'6. xyz';
'10. xyz';
'13. xyz';
he usado un encargo algo pero hace lo mismo ... se coloca '10 ..' antes '1a ...'. aquí está mi costumbre func:
function cmp($a, $b) {
$a_ex=explode(".",$a);
$b_ex=explode(".",$b);
if ($a_ex[0] == $b_ex[0]) {
return 0;
}
return ($a_ex[0] < $b_ex[0]) ? -1 : 1;
}
única usort ..... – idm
Como otros han dicho, 'natsort()' que funciona para mí. ¿Qué versión de PHP estás usando? – Hammerite