回答編集履歴

1

2022/02/21 08:33

投稿

yambejp
yambejp

スコア117755

test CHANGED
@@ -24,3 +24,36 @@
24
24
  } );
25
25
  print_r($a);
26
26
  ```
27
+ # 拗音を吸収
28
+ ```PHP
29
+ <?PHP
30
+ $a = [
31
+ ["code"=>"3B", "name"=>"たかぎ けいじ"],
32
+ ["code"=>"3A", "name"=>"いのまた らん"],
33
+ ["code"=>"3B", "name"=>"おかべ けいすけ"],
34
+ ["code"=>"3A", "name"=>"おかもと あい"],
35
+ ["code"=>"3A", "name"=>"おがさわら いちろう"],
36
+ ["code"=>"3B", "name"=>"おがさわら はなこ"],
37
+ ["code"=>"3C", "name"=>"ひよ6"],
38
+ ["code"=>"3C", "name"=>"びよ5"],
39
+ ["code"=>"3C", "name"=>"びょ4"],
40
+ ["code"=>"3C", "name"=>"ぴょ3"],
41
+ ["code"=>"3C", "name"=>"ひょ2"],
42
+ ["code"=>"3C", "name"=>"ぴよ1"],
43
+ ];
44
+ $names=array_map(function($x){
45
+ return [$x["name"],str_replace(["っ","ゃ","ゅ","ょ"],["つ","や","ゆ","よ"],mb_convert_kana(str_replace(["゙","゚",],"",mb_convert_kana($x["name"],"h")),"H"))];
46
+ },$a);
47
+ usort($names,function($x,$y){
48
+ return $x[1]>$y[1];
49
+ });
50
+ $names=array_flip(array_map(function($x){
51
+ return $x[0];
52
+ },$names));
53
+ usort($a,function($x,$y) use($names){
54
+ return $x["code"]==$y["code"]?
55
+ $names[$x["name"]]>$names[$y["name"]]:
56
+ $x["code"]>$y["code"];
57
+ } );
58
+ print_r($a);
59
+ ```