cuestión matriz PHP especie
Pregunta
quiero ordenar un arreglo por orden alfabético
cuando uso asort () su clasificación, pero los resultados que consigo es primero de todo, los nombres en mayúsculas, y después de que todos los nombres con minúsculas
como:
Avi
Beni
..
..
avi
beni
si quiero como:
Avi
avi
Beni
beni
..
..
¿Cómo puedo hacerlo?
Solución
Las soluciones propuestas, hasta ahora, enviaban correcta, natcasesort y usort ($ matriz, 'strcasecmp') soluciones no están cumpliendo con algunas configuraciones de matriz de partida.
Vamos a hacer algunas pruebas, para encontrar una solución.
<?php
$array1 = $array2 = $array3 = $array4 = $array5 = array('IMG1.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG2.png');
// This result is the one we nee to avoid
sort($array1);
echo "Standard sorting\n";
print_r($array1);
// img2.png and IMG2.png are not in the desired order
// note also the array index order in the result array
natcasesort($array2);
echo "\nNatural order sorting (case-insensitive)\n";
print_r($array2);
// img1.png and IMG1.png are not in the desired order
usort($array3, 'strcasecmp');
echo "\nNatural order sorting (usort-strcasecmp)\n";
print_r($array3);
// Required function using the standard sort algorithm
function mySort($a,$b) {
if (strtolower($a)== strtolower($b))
return strcmp($a,$b);
return strcasecmp($a,$b);
}
usort($array4, 'mySort');
echo "\nStandard order sorting (usort-userdefined)\n";
print_r($array4);
// Required function using the natural sort algorithm
function myNatSort($a,$b) {
if (strtolower($a)== strtolower($b))
return strnatcmp($a,$b);
return strnatcasecmp($a,$b);
}
usort($array5, 'myNatSort');
echo "\nNatural order sorting (usort-userdefined)\n";
print_r($array5);
?>
Otros consejos
Se puede usar netcasesort()
. Se ordenar una matriz usando un caso insensible "orden natural" algoritmo.
hacerlo de esta manera:
natcasesort($array);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow