usortを使用してカスタムパターンで配列を並べ替える投稿や質問はたくさんありますが、私のニーズに一致するものは見つかりませんでした。これが私がこれまでに持っているコードです、
$arrayToSort=array("Sabin","Anil","Cyrus","Kamal","Kesha","Bimal");
function mycmp($a, $b)
{
static $order = array('A', 'B','C',"Ke'",'Ka','R', 'S');
return array_search(substr($a,0,1), $order) - array_search(substr($b,0,1), $order);
}
usort($arrayToSort, "mycmp");
上記のコードは、$arrayToSortを次のパターンで並べ替えます
Array
(
[0] => Anil
[1] => Bimal
[2] => Cyrus
[3] => Kamal
[4] => Kesha
[5] => Sabin
)
ただし、私のカスタムパターンを調べる static $order = array('A', 'B','C',"Ke'",'Ka','R', 'S');
と、私のパターンのように、ケシャはカマルの前に来るはずです。「ケ」は「カ」の前に来る
繰り返しますが、私は最初の文字だけを取ることを知っsubstr($a,0,1)
ています。それが機能しない理由です。また、仕事を成し遂げるために別のアプローチをとらなければならないのではないかと疑っていますが、それを理解することはできません。
配列パターンの要素に一貫性がない場合、つまり、一部の要素に1つの文字があり、他の要素に2つの文字がある場合、どのように並べ替えますか?どんな助けでも大歓迎です。ありがとう