php Art Array Problem
Frage
Ich möchte ein Array sortieren nach Alphabet
Wenn ich asort () ihre Sortierung, aber die Ergebnisse, die ich bekommen vor allem ist, werden die Namen in Großbuchstaben, und danach alle Namen mit Kleinbuchstaben
wie:
Avi
Beni
..
..
avi
beni
Wenn ich will, wie:
Avi
avi
Beni
beni
..
..
Wie kann ich es tun?
Lösung
Die vorgeschlagenen Lösungen bisher Arent richtig, natcasesort und usort ($ arr, 'strcasecmp') Lösungen mit einigen Start-Array-Konfigurationen fehlschlagen.
Lassen Sie einige Tests, um eine Lösung zu finden.
<?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);
?>
Andere Tipps
Sie können mit netcasesort()
. Es Art ein Array mit einer Groß- und Kleinschreibung „natürliche Ordnung“ Algorithmus.
Machen Sie es wie folgt aus:
natcasesort($array);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow