natsort() などの標準的な php 関数で基本的な並べ替えを使用する方法と、usort() を使用していくつかのカスタム並べ替えを使用する方法を理解しています。私の質問は、多くの形式の変数がある場合に自然な並べ替えの結果を得る方法です。
例:
$test = array('3,000 Numeral', '2 A', '2 A+', '2 B', '2 C', '3 A', '3 B', '4 A', '4 A+', '4 B', 'A', 'A+', 'B', 'C');
usort または natsort を使用すると、最初に数値を出力し、最後に英数字を出力する配列になります。さらに悪いことに、並べ替え関数は、カンマで区切られた数値を、カンマの後の数値が存在しないかのように扱います。最終的には次のようになります。
array('2 A', '2 A+', '2 B', '2 C', '3 A', '3 B', '3,000 Numeral', '4 A', '4 A+', '4 B', 'A', 'A+', 'B', 'C')
したがって、私の質問は、高度な並べ替えを使用して複数レベルの並べ替えロジックを処理し、最終的に自然な進行になる方法だと思います。何かのようなもの:
array('A', 'A+', 'B', 'C', '2 A', '2 A+', '2 B', '2 C', '3 A', '3 B', '4 A', '4 A+', '4 B', '3,000 Numeral')