規則性のある配列をスマートに作成!

このQ&Aのポイント
  • 質問者は、規則性のある配列をスマートに作成したいという相談をしています。そして、配列の内容をまとめるための要約文を3つ作成しました。
  • 質問者は、foreachやforを使用してスマートに配列を作成したいと考えています。具体的には、アルファベットと対応する日本語文字のペアを持つ配列を作成したいとのことです。
  • 質問者は、アルファベットをキーとし、日本語文字を値とする配列を作成したいと相談しています。具体的には、「あ」から「わ」までのアルファベットと対応する日本語文字のペアを持つ配列を作成したいとのことです。
回答を見る
  • ベストアンサー

規則性がある配列を、格好良く作成したいのですが……

こういう配列なのですが、何か良い案はあるでしょうか? foreachとか、forなどを使って、スマートに配列を作成したいです $hoge = array(  "あ" => "aa",  "い" => "ii",  "う" => "uu",  "え" => "ee",  "お" => "oo",  "か" => "ka",  "き" => "ki",  "く" => "ku",  "け" => "ke",  "こ" => "ko",  "さ" => "sa",  "し" => "si",  "す" => "su",  "せ" => "se",  "そ" => "so",  "た" => "ta",  "ち" => "ti",  "つ" => "tu",  "て" => "te",  "と" => "to",  "な" => "na",  "に" => "ni",  "ぬ" => "nu",  "ね" => "ne",  "の" => "no",  "は" => "ha",  "ひ" => "hi",  "ふ" => "hu",  "へ" => "he",  "ほ" => "ho",  "ま" => "ma",  "み" => "mi",  "む" => "mu",  "め" => "me",  "も" => "mo",  "や" => "ya",  "ゆ" => "yi",  "よ" => "yu",  "ら" => "ra",  "り" => "ri",  "る" => "ru",  "れ" => "re",  "ろ" => "ro",  "わ" => "wa",  "を" => "wo", );

  • re97
  • お礼率80% (601/744)
  • PHP
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

for 使いました。 --- $h = 'あいうえおかきくけこ'; // UTF-8 $r = 'aaiiuueeookakikukeko'; $arr = array(); for ($i = 0; $i < strlen($h)/3; $i++) $arr[mb_strcut($h, $i*3, 3)] = mb_strcut($r, $i*2, 2); print_r($arr); --- そもそも規則性がないのでなんとも。(aa ai au ae ao?)

re97
質問者

お礼

回答ありがとうございました。 凄いです! >そもそも規則性がないのでなんとも。(aa ai au ae ao?) 無茶振りしてすいません……

その他の回答 (2)

  • chr001
  • ベストアンサー率75% (6/8)
回答No.3

No.1です。 >希望としては、この配列自体を動的生成したいのですが、五十音とかアルファベットが絡む配列を一気に作成する方法ってないでしょうか? そういうクラスなり、ライブラリなりを自作されれば一気に配列を作成する事はできるようになりますが、僕の知る範囲ではありません。 ※アルファベットに関するものは探せば見つかりそうですが。 どうしてもそういうライブラリが必要であれば、 「あ」~「ん」または濁音、半濁音、カタカナ(全角/半角)、小さいひらがなを管理するクラスを作成し、 パラメータをセットすることで返す配列を変えるようなstaticなクラスで対応できそうですが、汎用性はほとんどありませんね。。

re97
質問者

お礼

回答ありがとうございました。 >アルファベットに関するものは探せば見つかりそうですが。 やっぱり五十音に関するものはないんですね… >汎用性はほとんどありませんね 参考になりましたー

  • chr001
  • ベストアンサー率75% (6/8)
回答No.1

ソースコードを「スマートに」したいのであれば、例題のような値を記した設定ファイル(xxx.ini)を用意し、 parse_ini_file()関数とかで呼び出す方法などが考えられます。 ただし結局は値を書いた設定ファイルを作らなければいけないので、労力的にはさほど変わりありません。 例題のようにソースコード内に直接配列を書くか、 設定ファイル(またはDBのデータ)を用意して呼び出して利用するか、のどちらかだと思いますが、 もし私なら後者の方法で実装すると思います。

re97
質問者

補足

回答ありがとうございます。 希望としては、この配列自体を動的生成したいのですが、五十音とかアルファベットが絡む配列を一気に作成する方法ってないでしょうか?

関連するQ&A

  • ta su ke te ku da sa i he n ka n de ki na i

    ke si te hu za ke te ru wa ke de ha a ri ma se n hi ra ga na ha nyu u ryo ku de ki ru n de su ga Enter wo o su to nyu u ryo ku de ki na ku na ru n de su ho n da i ha ko ko ka ra su pe - su wo o si ta ra hu ri - zu? su ru n de su ke n sa ku no to ki ya ge - mu no tya tto no to ki to ka de su ge - mu no do u sa no to ki ha da i zyo u bu de su ho n to u ni ko ma tte i ma su ta su ke te ku da sa i

  • 各言語の音の数

    日本語の音の数は a,i,u,e,o ka,ki,ku,ke,ko sa,shi,su,se,so ta,ti,tu,te,to na,ni,nu,ne,no ha,hi,hu,he,ho ya,yu,yo ra,ri,ru,re,ro wa,n ga,gi,gu,ge,go za,zi,zu,ze,zo da,di,de,do pa,pi,pu,pe,po (これは入るのかな?) va,vi,vu,ve,vo qa,qi,qe,qo くらいですが、英語の音の数は1050個あると聞きました。 世界の言語の音の数みたいのが載っているサイトとかありませんか? また、こういうことについて詳しい方。 色々な言語の音の数について教えてください。

  • MO JI

    yo mi zu ra i de su ga ha n ka ku wo o su to 庰ᓂ庰ᓂ 庰ᓂ庰ᓂ庰ᓂ ko u na ri ma su syatto da u n mo de ki ma se n ta su ke te ku da sa i

  • gengo bar ga kieta

    gengo bar ga kiete simaimasita kaihuku houhou osiete kudasai ro-maji nyuuryoku sika dekimasen nihonngo hennkann wo sitainodesuga task bar no tu-ru bar niha genngo bar ga arimasenn

  • ローマ字表記について

    ローマ字表記についてなのですが なぜ日本語のローマ字表記では「ふ」が「Fu (Hu でなく)」で、 「らりるれろ」が「Ra Ri Ru Re Ro (La Li Lu Le Lo でなく)」なのでしょうか。 それは日本語で呼ばれるローマ字表記が、正式には「ラテン・アルファベット」で そのラテン・アルファベットで、もっとも日本語の音に近い発音が 上記の「Fu」とか「Ra Ri....」だからということでしょうか。 ご意見をお聞かせください。 宜しくお願いします。

  • ro u ma gi nyu ryoku ga de ki ma se nn

    ta i to ru do o ri de su. hi ra ga na nyukyoku ga ko te i si te si matte i ru yo u na no de su.PCwo ke si wa su re te si ma i o ki ta ra ko no jyou ta i de su u i ru su de syou ka?

  • 別ファイルに配列を渡して、別ファイルのクラスを実行

    index.phpから別ファイルのclass.phpに配列を渡して、 クラスを実行したいと考えています。 //----------------------------------- //-- index.php --- <?php class hiragana { public $a_ka_sa; function init() { $this->a_ka_sa = array(); } } $j_hiragana = new hiragana(); $val[0] = array('a'=>'あ' , 'i'=>'い' , 'u'=>'う' , 'e'=>'え' , 'o'=>'お'); $val[1] = array('ka'=>'か' , 'ki'=>'き' , 'ku'=>'く' , 'ke'=>'け' , 'ko'=>'こ'); $val[2] = array('sa'=>'さ' , 'si'=>'し' , 'su'=>'す' , 'se'=>'せ' , 'so'=>'そ'); $j_hiragana->a_ka_sa[0] = (object) $val[0]; $j_hiragana->a_ka_sa[1] = (object) $val[1]; $j_hiragana->a_ka_sa[2] = (object) $val[2]; var_dump($j_hiragana); //----------------------------------- このようになっているプログラムを //----------------------------------- //-- index.php --- <?php $val[0] = array('a'=>'あ' , 'i'=>'い' , 'u'=>'う' , 'e'=>'え' , 'o'=>'お'); $val[1] = array('ka'=>'か' , 'ki'=>'き' , 'ku'=>'く' , 'ke'=>'け' , 'ko'=>'こ'); $val[2] = array('sa'=>'さ' , 'si'=>'し' , 'su'=>'す' , 'se'=>'せ' , 'so'=>'そ'); //----------------------------------- 配列の部分だけindex.phpに残して //----------------------------------- //-- class.php --- <?php class hiragana { public $a_ka_sa; function init() { $this->a_ka_sa = array(); } } $j_hiragana = new hiragana(); //-------------- // $val[0] = array('a'=>'あ' , 'i'=>'い' , 'u'=>'う' , 'e'=>'え' , 'o'=>'お'); // $val[1] = array('ka'=>'か' , 'ki'=>'き' , 'ku'=>'く' , 'ke'=>'け' , 'ko'=>'こ'); // $val[2] = array('sa'=>'さ' , 'si'=>'し' , 'su'=>'す' , 'se'=>'せ' , 'so'=>'そ'); //-------------- $j_hiragana->a_ka_sa[0] = (object) $val[0]; $j_hiragana->a_ka_sa[1] = (object) $val[1]; $j_hiragana->a_ka_sa[2] = (object) $val[2]; //----------------------------------- class.phpに移して、 index.phpを開くとclass.phpのクラス?に配列を渡しクラス?を実行する プログラムを作りたいと考えていますが、 うまく配列を渡してクラス?を実行できません。 どのようにすればよいのでしょうか?

    • 締切済み
    • PHP
  • would you translate this paragraph?

    supo-tu o surukoto wa taihen kenko- ni yoi. nakademo, earobikusu, suiei, walking nadono yu-sanso undo- wa 20pun ijo- tudukeruto kouritu yoku karadani tamatta sibou wo moyassunode aru.mata, nikutai teki dakeni kagirazu, seisinteki nimo yoi. toiunowa, tekido na supo-tu wo sita ato wa kokoromo rihuressyu si, kibun tenkan nimo narukarada. ---------------------------------- ro-maji de gomen nasai. yoroshiku onegai shimasu! tuideni spo-tu wo suru meritto o omoituitara osietekudasai!!

  • ローマ字変換アルゴリズムを教えてください。

    #include<stdio.h> #include<stdlib.h> #include<string.h> wchar_t t[50][5]={ L"あ",L"い",L"う",L"え",L"お", L"か",L"き",L"く",L"け",L"こ", L"さ",L"し",L"す",L"せ",L"そ", L"た",L"ち",L"つ",L"て",L"と", L"な",L"に",L"ぬ",L"ね",L"の", L"は",L"ひ",L"ふ",L"へ",L"ほ", L"ま",L"み",L"む",L"め",L"も", L"や",L" ",L"ゆ",L" ",L"よ", L"わ",L" ",L"を",L" ",L"ん" }; char t2[50][3]={ "a ","i ","u ","e ","o ", "ka","ki","ku","ke","ko", "sa","si","su","se","so", "ta","ti","tu","te","to", "na","ni","nu","ne","no", "ha","hi","hu","he","ho", "ma","mi","mu","me","mo", "ya"," ","yu"," ","yo", "wa"," ","wo"," ","nn" }; wchar_t *henkan() { wchar_t str[150]; char str2[300]; int i=0; int j; scanf("%s",&str2); while(str2[i]) { for(j=0;j<50;j++) { if(strcmp(str2,t2[j])==0) { str[i]=t[j]; str[i+1]='\0'; } } i+=2; } printf("入力された文字は%sです。\n",str); return str; } int main(void) { wchar_t str[1000]; while(1) { str=henkan(); } return 0; } ローマ字から、ひらがなに変換するアルゴリズムを考えているのですが、 なかなかうまくいきません。このソースコードはコンパイルもできませんでした。 どうすれば、うまくいきますでしょうか?

  • 「た」行の違和感

    日本語の「あ」行をローマ字にしてみると 「あいうえお」→「aiueo」 か行以降はそれぞれ、k,s,t,n,h,m,y,r,wを子音として、その後に母音を入れる事で成り立ちます。 「かきくけこ」→「ka ki ku ke ko」となっています。 しかし、 「ta ti tu te to」を素直に日本語に直そうとすると「た てぃ とぅ て と」になるような気がします。 事実、英語の発音記号では、「ち」は別の発音記号が使われています。 「たちつてと」という5つの音はどういふうに成立したのでしょうか? t +母音 ではないきがするのですが・・・