上記の答えはうまくいきませんでした. そこで、一般的な多次元配列の大文字と小文字を区別しない比較関数を作成しました。複数のキーを使用することもできます。
function array_casecmp($keys) {
if (gettype($keys) != "array") $keys = func_get_args();
return function ($a, $b) use ($keys) {
foreach($keys as $value) {
$akeys = $akeys . $a[$value];
$bkeys = $bkeys . $b[$value];
}
return strcasecmp($akeys, $bkeys);
};
}
次のように使用します。
usort($files,strcasecmp(array(0,1)); // with standard array
usort($files,strcasecmp(1); // single key
usort($files,strcasecmp(0,1); // arguments are converted to array
usort($files,strcasecmp("dir","link")); // you can also use symbolic keys
usort($files,strcasecmp(0,1,2,3,4,...); // use as many keys as you like
キーは連結されていることに注意してください。したがって、配列の列で str_pad を使用して、それらを正しい方法で分離しておく必要があるかもしれません。