16

PHP 5.4 では、他の検索で大文字と小文字を区別しないようにするための便利な SORT_FLAG_CASE が導入されています。残念ながら、これは PHP 5.3 以下では利用できないため、次の配列がどのように機能するのか疑問に思っていました。

array('a'=>2,'b'=>4,'A'=>1,'B'=>3);

次のように分類できます。

array('A'=>1,'a'=>2,'B'=>3,'b'=>4);

通常のksort()関数は次のようにソートします。

array('A'=>1,'B'=>3,'a'=>2,'b'=>4);
4

3 に答える 3

34

PHP 関数のリファレンス ページの 1 つにコメントがあり、そのuksort()関数を指摘されました。これ (およびuasort()キーの代わりに値でソートする関数) により、クイック ソートでシフトするための比較アルゴリズムをユーザーが記述できるようになります。

これを非常に単純なstrcasecmp()関数 (2 つの文字列を比較し、a>b に対して <0 を返し、a>b に対して >0 を返す) と組み合わせると、次のようになります。

uksort($array, 'strcasecmp');

以下の効果を簡単に達成するには:

ksort($array,SORT_STRING | SORT_FLAG_CASE);

PHP 5.3 以下。

于 2012-08-29T14:30:36.880 に答える