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?

War es hilfreich?

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
scroll top