あいうえお順に並べ替え

全員を3年あいうえお順で表示します

元のデータは前と同じ 2to3nen.txt です。並べ替えてから表にするでやったのと同じ手法です。

プログラムです。

<?php
$fp = fopen("2to3nen.txt","r");        
while(!feof($fp)){
    $line = fgets($fp);
    if (trim($line) != null){
        list($hr,$no,$sei,$mei,$seib,$ysei,$ymei,$newhr,$newno) = explode("\t",$line);
        $key = $ysei . " " . $ymei;
        $val = $line;
        $gotoarray[$key]=$val;
    }
}
ksort($gotoarray);
foreach ($gotoarray as $key => $val) {
    list($hr,$no,$sei,$mei,$seib,$ysei,$ymei,$newhr,$newno) = explode("\t",$val);
    print "<tr>\n";
    print "<td>$newhr</td><td>$newno</td><td>$sei</td><td>$mei</td>";
    print "<td>$seib</td><td>$ysei</td><td>$ymei</td>\n";
    print "<td>$hr</td><td>$no</td>\n";
    print "</tr>\n";
}
fclose($fp);
?>

実行結果です。

⇩並び替え(文字コード順)
3E1 赤石ちさとあかいしちさと 2C1
3H19 秋山裕章あきやまひろあき 2F19
3A19 浅利和哉あさりかずや 2D19
3G19 浅利竜一あさりりゅういち 2F20
3G20 天内あまないてつ 2D20
3E2 有馬礼奈ありまれいな 2A1
3F19 池内博文いけうちひろふみ 2H19
3G21 石岡いしおかひかる 2A19
3A20 石川和茂いしかわかずしげ 2D21
3D1 石田美貴子いしたみきこ 2F1
3F1 石田理那いしだりな 2B1
3E3 早織いずみさおり 2D1
3D19 泉谷雅史いずみやまさふみ 2C19
3C19 板垣裕和いたがきひろかず 2B19
3A21 一戸いちのへさとし 2B20
3C20 一戸達耶いちのへたつや 2C20
3B1 一戸真紀いちのへまき 2F2
3D2 伊藤春香いとうはるか 2G1
3F2 伊藤摩衣子いとうまいこ 2G2
3H20 伊藤芳行いとうよしゆき 2D22
3B2 稲葉紀子いなばのりこ 2C2
3G1 今井綾乃いまいあやの 2E1
3C1 今井沙耶加いまいさやか 2B2
3C21 今村いまむらつとむ 2G19
3B3 岩間恵梨いわまえり 2D2
3F3 岩谷菜保子いわやなおこ 2G3
3G2 上野加奈うえのかな 2A2
3G22 上野陽代うえのようだい 2H20
3F4 内沢うちざわけい 2B3
3A1 梅村千草うめむらちぐさ 2E2
3H1 瓜田尚子うりたなおこ 2D3
3E19 大瀬真夏おおせまなつ 2E19
3D20 大瀬龍二おおせりゅうじ 2G20
3A22 太田拳寛おおたたかひろ 2H21
3F5 太田祐子おおたゆうこ 2F3
3C2 大谷珠美おおたにたまみ 2D4
3H21 岡部佳祐おかべけいすけ 2A20
3A2 岡本おかもとあい 2A3
3A23 小笠原一生おがさわらいっせい 2G21
3B4 小笠原おがさわらひとみ 2B4
3D3 小山内おさないあや 2F4
3F6 小山内静枝おさないしずえ 2H1
3G23 小澤俊太郎おざわしゅんたろう 2G22
3G3 小田切おだぎりあゆみ 2E3
3H22 小田切一茂おだぎりかずしげ 2D23
3A24 小野おのたくみ 2H22
3A3 小野寺のぞみおのでらのぞみ 2B5
3D21 小山おやままこと 2F21
3H23 葛西かさいじゅん 2E20
3C22 葛西大器かさいたいき 2B21
3A4 葛西由佳かさいゆか 2G4
3B19 葛西佳孝かさいよしたか 2G23
3B5 葛西良子かさいりょうこ 2B6
3D22 梶原尚志かじわらひさし 2H23
3C23 嘉瀬かせしん 2H24
3B6 加藤聖美かとうさとみ 2C3
3F7 加藤未希かとうみき 2B7
3B7 金光つぐみかねみつつぐみ 2H2
3A5 樺沢郁乃かばさわいくの 2D5
3E20 川口かわぐちりょう 2E21
3E4 川崎朋世かわさきともよ 2F5
3F8 川嶋晴香かわしまはるか 2E4
3H2 川田潤子かわだじゅんこ 2C4
3D23 川村翔太かわむらしょうた 2H25
3C24 川村佑樹かわむらゆうき 2B22
3E5 神成知美かんなりともみ 2E5
3C3 勘林愛美かんばやしまなみ 2C5
3A25 菊地心平きくちしんぺい 2E22
3G24 北野誠二きたのせいじ 2C21
3B20 木下志郎きのしたしろう 2D24
3E6 木村伊奈子きむらいなこ 2G5
3B21 木村きむらけん 2F22
3G4 木村静穂きむらしずほ 2C6
3E21 木村崇史きむらたかふみ 2E23
3H3 木村夏子きむらなつこ 2B8
3H4 木村美輝きむらみき 2H3
3F9 工藤幸愛くどうさちえ 2B9
3E7 工藤紫乃くどうしの 2G6
3B22 工藤貴規くどうたかのり 2A21
3E22 工藤敬弘くどうたかひろ 2B23
3B23 工藤くどうたくみ 2B24
3F20 工藤大地くどうだいち 2F23
3E8 工藤恵実くどうめぐみ 2G7
3D4 工藤由佳くどうゆか 2E6
3A6 工藤麗子くどうれいこ 2A4
3H24 倉光匡人くらみつまさと 2B25
3C25 倉光泰博くらみつよしひろ 2E24
3B24 黒滝貴広くろたきたかひろ 2C22
3A7 黒瀧由来乃くろたきゆきの 2D6
3C4 桑田明菜くわたあきな 2A5
3B25 小枝こえだりょう 2D25
3E9 古川ちひろこがわちひろ 2C7
3C26 古川久義こがわひさよし 2A22
3G5 児島直子こじまなおこ 2F6
3B8 久仁子こんくにこ 2E7
3G6 後藤麻美ごとうあさみ 2D7
3C27 齋藤啓太さいとうけいた 2B26
3A26 齊藤康樹さいとうこうき 2H26
3F21 齋藤慎一郎さいとうしんいちろう 2D26
3H25 齋藤大樹さいとうたいき 2G24
3F22 齋藤武尊さいとうたける 2B27
3B26 齋藤正樹さいとうまさき 2C23
3E10 齋藤由梨さいとうゆり 2B10
3D5 真由美さかいまゆみ 2E8
3C5 坂田さかたあや 2H4
3E11 桜田綾子さくらだあやこ 2F7
3B9 佐々木五月ささきさつき 2A6
3B10 佐々木詔子ささきのりこ 2B11
3F10 佐々木美緒ささきみお 2C8
3E12 佐々木美聡ささきみさと 2E9
3B27 笹森裕哉ささもりゆうや 2A23
3C6 佐藤麻子さとうあさこ 2C9
3H5 佐藤麻実さとうあさみ 2C10
3C7 佐藤喜久さとうきく 2C11
3C28 佐藤聡志さとうさとし 2E25
3B11 佐藤詩織さとうしおり 2A7
3H26 佐藤辰也さとうたつや 2B28
3G7 佐藤菜都乃さとうなつの 2D8
3G25 佐藤春樹さとうはるき 2C24
3A27 佐藤裕哉さとうゆうや 2F24
3C8 佐藤嘉子さとうよしこ 2F8
3F23 佐藤義孝さとうよしたか 2B29
3D6 澤田郁美さわだいくみ 2F9
3D24 澤田慶亮さわだけいすけ 2C25
3C9 三戸彬恵さんのへあきえ 2F10
3F24 志賀柾彦しがまさひこ 2D27
3G26 篠崎博昭しのざきひろあき 2G25
3E13 柴田美枝子しばたみえこ 2H5
3A8 柴谷小百合しばやさゆり 2G8
3E23 澁谷文彦しぶやふみひこ 2D28
3A9 嶋津由香利しまづゆかり 2B12
3H6 清水南奈しみずなな 2C12
3E14 下山恵理香しもやまえりか 2C13
3G27 下山大貴しもやまたいき 2H27
3F11 下山由紀しもやまゆき 2D9
3E24 白戸克典しろとかつのり 2H28
3B12 白戸隆恵しろとたかえ 2G9
3B28 朋之じんともゆき 2H29
3H7 美佳すがみか 2F11
3G8 菅原知紗すがわらかずさ 2H6
3B13 鈴木信穎すずきしんえい 2E10
3E25 須藤隼也すとうしゅんや 2E26
3G9 須藤菜摘すとうなつみ 2A8
3F25 須藤龍一すとうりゅういち 2F25
3C29 住友伸一すみともしんいち 2A24
3A10 諏訪亜由香すわあゆか 2E11
3B29 清藤貴章せいとうたかあき 2C26
3E15 清藤桃香せいとうももこ 2G10
3D7 清野杏奈せいのあんな 2B13
3D8 相馬佳澄そうまかすみ 2D10
3H27 相馬そうましょう 2G26
3A28 相馬そうまじょう 2H30
3E26 相馬琢磨そうまたくま 2G27
3C30 相馬健人そうまたけと 2F26
3D25 相馬俊輝そうまとしき 2F27
3H8 相馬友美そうまともみ 2H7
3A11 相馬美和そうまみわ 2D11
3G28 相馬亮丞そうまりょうすけ 2D29
3H28 髙木貴尋たかきたかひろ 2H31
3E27 高木勇輝たかぎゆうき 2E27
3E28 髙野一輝たかのかずき 2B30
3D9 高野春香たかのはるか 2F12
3D26 高橋浩介たかはしこうすけ 2E28
3D10 高橋佐和子たかはしさわこ 2E12
3E29 高橋隼也たかはしじゅんや 2B31
3G29 竹内怜史たけうちさとし 2B32
3A12 竹浪千秋たけなみちあき 2D12
3B14 竹谷亜紀たけやあき 2G11
3E16 竹谷梨奈たけやりな 2D13
3B15 田澤彩乃たざわあやの 2H8
3F26 田澤一希たざわかずき 2E29
3C10 舘山郁子たてやまいくこ 2A9
3H29 舘山健太たてやまけんた 2C27
3C31 舘山秀憲たてやまひでのり 2C28
3D11 田中恵美子たなかえみこ 2B14
3F12 田中佳奈子たなかかなこ 2D14
3H9 田中邦子たなかくにこ 2G12
3B30 田中圭吾たなかけいご 2C29
3G10 田中智美たなかさとみ 2A10
3A29 田中俊貴たなかとしき 2F28
3F27 田中秀一たなかよしかず 2A25
3H30 田中理人たなかよしひと 2E30
3D27 賢児たにけんじ 2E31
3C11 谷川真実たにかわまみ 2E13
3A30 田村裕也たむらゆうや 2F29
3D12 千葉綾乃ちばあやの 2G13
3H31 千葉浩介ちばこうすけ 2G28
3H10 千葉紗千ちばさち 2A11
3H11 千葉朋恵ちばともえ 2E14
3E30 對馬隆盛つしまりゅうせい 2D30
3D28 土田つちだとおる 2C30
3G30 土屋祐輔つちやゆうすけ 2F30
3B16 常田千恵つねたちえ 2H9
3E31 土岐ときたもつ 2F31
3B31 外崎祐介とのさきゆうすけ 2B33
3E17 直井絵洋なおいえみ 2A12
3F28 直井隼人なおいはやと 2A26
3D13 中澤風香なかざわふうか 2C14
3H12 中田典子なかたのりこ 2H10
3D29 中野拓人なかのたくと 2H32
3G31 中畑雄太なかはたゆうた 2E33
3D30 中林憲輔なかばやしけんすけ 2G29
3F13 中道美希なかみちみき 2H11
3F29 長田ながたみのる 2E32
3C12 奈良純子ならじゅんこ 2D15
3G11 奈良美由紀ならみゆき 2F13
3D14 奈良岡真弥ならおかまや 2H12
3H13 成田恵里佳なりたえりか 2A13
3C13 成田なりたかおる 2G14
3A31 成田貴昭なりたたかあき 2D31
3C32 成田辰留なりたたつる 2D32
3H32 成田信明なりたのぶあき 2G30
3G12 成田晴江なりたはるえ 2D16
3F30 成田友生なりたゆうき 2A27
3A13 鳴海麻美なるみあさみ 2A14
3A32 鳴海拓真なるみたくま 2A28
3G13 鳴海春菜なるみはるな 2B15
3A33 鳴海勇太郎なるみゆうたろう 2F32
3E32 鳴海嘉浩なるみよしひろ 2A29
3G32 西尾昭宏にしおあきひろ 2E34
3B32 西澤伸也にしざわしんや 2E35
3D31 野呂正太郎のろしょうたろう 2G31
3A14 野呂春菜のろはるな 2F14
3C33 橋津喜明はしずよしあき 2A30
3C34 長谷川はせがわたける 2F33
3F31 畑山裕也はたけやまゆうや 2F34
3E18 服部早紀はっとりさき 2C15
3B33 樋口尚宏ひぐちたかひろ 2G32
3G33 平田ひらたはじめ 2C31
3B17 平山香奈恵ひらやまかなえ 2B16
3F14 平山真澄ひらやまますみ 2G15
3D32 深沢芳樹ふかざわよしき 2G33
3H14 吹田紗希ふきたさき 2H13
3D15 福井ふくいあゆみ 2E15
3G34 福崎ふくざきのぼる 2D33
3G14 福士桃子ふくしももこ 2D17
3D16 福嶋有紗ふくしまありさ 2H14
3A15 福田初美ふくだはつみ 2C16
3A34 福原史学ふくはらふみのり 2G34
3C14 藤田杏奈ふじたあんな 2C17
3A35 藤田健一ふじたけんいち 2A31
3B34 藤田良平ふじたりょうへい 2A32
3H33 藤林裕貴ふじばやしゆうき 2C32
3F32 本田利城ほんだとしき 2G35
3C15 本間鈴夏ほんますずか 2E16
3G15 前田陽子まえだようこ 2F15
3A16 蒔苗菜摘まかなえなつみ 2A15
3E33 正井翔也まさいしょうや 2D34
3F15 松岡明日香まつおかあすか 2F16
3D33 丸山まるやまあきら 2B34
3F33 三浦みうらたつる 2H33
3C35 三浦英明みうらひであき 2A33
3H15 三浦麻由美みうらまゆみ 2G16
3F34 三上恭平みかみきょうへい 2F35
3E34 三上健太みかみけんた 2E36
3A36 三上翔太郎みかみしょうたろう 2D35
3H34 三上大輔みかみだいすけ 2A34
3F16 三上夏紀みかみなつき 2H15
3G16 三上春奈みかみはるな 2F17
3H35 三上由智みかみよしのり 2F36
3F35 水木貴寛みずきたかひろ 2C33
3D34 水戸直人みとなおと 2H34
3G35 棟方悟志むなかたさとし 2C34
3G17 棟方美樹むなかたみき 2A16
3H16 村元文乃むらもとあやの 2G17
3H36 八木橋清吾やぎはしせいご 2A35
3F36 矢島俊明やしまとしあき 2G36
3D35 山内晶大やまうちあきひろ 2C35
3D17 山内清香やまうちさやか 2E17
3A17 山内志保やまうちしほ 2H16
3B35 山内達也やまうちたつや 2B35
3E35 山内修敬やまうちのぶゆき 2D36
3E36 山形やまがたじゅん 2A36
3H17 山形やまがたみどり 2E18
3B36 山口隆博やまぐちたかひろ 2H35
3D18 山下真実やましたまみ 2B18
3C17 山田やまだしのぶ 2A17
3D36 山本やまもとひろし 2B36
3G18 山本倫子やまもとみちこ 2H17
3A18 幸田奈々子ゆきたななこ 2C18
3C36 幸田真琴ゆきたまこと 2C36
3G36 吉岡悦洋よしおかよしひろ 2H36
3F17 吉川佳織よしかわかおり 2A18
3H18 米村愛乃よねむらあいの 2D18
3B18 渡辺加菜子わたなべかなこ 2H18
3F18 渡邉知佳子わたなべちかこ 2G18
3C18 渡邊まどかわたなべまどか 2F18

このソートの問題点その1

日本語の50音順からいって次の部分は問題があります。

3G5 児島直子こじまなおこ 2F6
3B8 久仁子こんくにこ 2E7
3G6 後藤麻美ごとうあさみ 2D7

正しくは次のようになります。

3G5 児島直子こじまなおこ 2F6
3G6 後藤麻美ごとうあさみ 2D7
3B8 久仁子こんくにこ 2E7

この問題を持つ部分は他にもあります。

日本語のソート順はJIS X 4061で定められたJIS規格です。

  1. 「が」「ば」などの濁点付き文字はや「ぱ」「ぴ」などの半濁点付き文字は濁点半濁点を取った文字と置き換える。
  2. 「あ」「い」「う」「え」「お」「か」「き」「く」「け」「こ」「さ」「し」「す」「せ」「そ」「た」「ち」「つ」「て」「と」「な」「に」「ぬ」「ね」「の」「は」「ひ」「ふ」「へ」「ほ」「ま」「み」「む」「め」「も」「や」「ゆ」「よ」「ら」「り」「る」「れ」「ろ」「わ」「ゐ」「ゑ」「を」「ん」の順に並べる
  3. 並び替えを行った後、一致する順位となる文字列は、清音文字→濁点付き文字→半濁点付き文字の順で並べる

この問題の本質は文字コード順では日本語のソート順にならないという事につきます。

このソートの問題点その2

これは運用上の問題です。keyを作る部分で考慮が足りませんでした。

ソート後、一人足りなくなっています。

課題

1.

上のあいうえお順になるページを作り、 sort2.php としなさい。index.htmlに「50音順」という名前のリンクを作りなさい。

順番が間違っているところをさらに見つけなさい。

2.

問題点その2の原因はなんですか。

とりあえず数を数えてみましょう

foreachの前の行に、
    $ct=0;
を置く。
    print "<td>$newhr</td><td>$newno</td><td>$sei</td><td>$mei</td>";
の部分を
    $ct++;
    print "<td>$ct</td><td>$newhr</td><td>$newno</td><td>$sei</td><td>$mei</td>";
とする。

これで、行番号をつけることができます。288人いるのですが、1から始まって287までになると思います。

行番号をつけたページを作り、 sort2ct.php としなさい。index.htmlに「50音順287」という名前のリンクを作りなさい。