• 締切済み

Array()で配列の一次元部分と二次元部分に同時に値を代入するには

class categoryInfo{  var $langName = array(   "app" => array(    "c" => "C&C++",    "java" => "Java",    "vb" => "Visual Basic.NET",(以下略)   ),   "markup" =>array(    "html" => "HTML",    "css" => "CSS"   ),   "web_app" => array(    "javascript" =>"JavaScript",    "php"=>"PHP",    "perl"=>"CGI/Perl"   ),  );  $langName[app] = "アプリケーション開発用言語";  $langName[markup] = "マークアップ言語";  $langName[web_app] = "Webアプリ"; } ・・・という風にしているのですが、当然ながら、最後の $langName[app] = "アプリケーション開発用言語"; などは、既に宣言した変数に値を代入する行為であるため、関数内で行うように、とのエラーメッセージが出力されてしまいます。  コンストラクタで宣言すれば良い話ではあるのですが、600行ほどあるファイルなので、別の場所で宣言すると面倒になってしまいます。  又、後々foreachを使うので、連想配列を用いている以上、Array()を使って順番を定義したいのです。  このArray()の中で、$langName['app']などの一次元部分に値を代入した上、$langName['app']['c']などの二次元の部分にも値を代入する方法はありますでしょうか?

noname#82539
noname#82539
  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

期待している動作は出来ないと思います。 $langName[app]等は配列か文字列のどちらかを選ぶ必要があります。   "web_app" => array(    "title" =>"Webアプリ",    "javascript" =>"JavaScript",    "php"=>"PHP",    "perl"=>"CGI/Perl"   ), のように配列の中に入れるか、 var $title = array(   "app"=>"アプリケーション開発用言語",   "markup"=>"マークアップ言語",   "web_app"=>"Webアプリ" ); のようにして分けるかをするべきじゃないかなと思います。

noname#82539
質問者

お礼

 ご回答ありがとうございます。  元々できない動作だったのですね・・・。挙げていただいた方法も含め、代替策を検討しようと思います。

関連するQ&A

  • Arrayオブジェクトを使った多次元配列の作り方

    こんにちは。 JavaScriptで多次元配列を宣言したいのですが、 配列を宣言するのに使うArrayオブジェクトでの宣言方法がわかりません。 多次元配列を宣言することって、そもそも可能なのでしょうか? どうぞよろしくお願いします

  • 多次元配列

    初歩的な質問ですみません。 PHPプログラミングでの質問です。 仮に、多次元配列Aに、 Array( [0] => Array ( [0] => 6 ) [1] => Array ( [0] => 2 [1] => 1 ) [2] => Array ( [0] => 0 [1] => 5 [2] => 4 ) ) 多次元配列Bに、 Array( [0] => Array ( [0] => りんご ) [1] => Array ( [0] => ぶどう [1] => パイナップル ) [2] => Array ( [0] => みかん [1] => すいか [2] => メロン ) ) のように値が入っている場合、配列Aの値を参照して 値の大きいものから順に、それに対応する配列Bの値を取り出し、 あたらしい配列Cに代入する処理の書き方を教えて下さい。 上記の例ですと、配列Cが、 Array ( [0] => りんご [1] => すいか [2] => メロン [3] => ぶどう [4] => パイナップル [5] => みかん ) となるようにしたいです。 よろしくお願いします。 長文失礼しました。

    • ベストアンサー
    • PHP
  • 2次元配列への値の代入

    C言語の初心者です。 以下のようなプログラミングをしたいのですがどう組めばいいのでしょう。 2次元配列に値を代入する。 ただし条件が成立するときだけ。 そこで以下のようにプログラムを組みましたが、 どうも、うまくいきません #include<stdio.h> void main(){ int k,l,m; int ans[5][10]; l=0; for(k=0;k<5;k++){ if(k==4){ ans[k][l]=1; l++; printf("%d\n",ans[k][l]); } } } kはインクリしたいのですが、lは条件が成立するときだけインクリしなければならないのですが、 どうプログラミングすべきなのでしょうか?

  • 3次元配列

    初歩的な質問で申し訳ございません、非常に困っています 教えて下さい lotno(1~4,1~4,1~5) の3次元配列を宣言し、計算で求められた値を代入したいのですが どのように記述したらいいのでしょうか? また配列 lotno() はモジュール変数です

  • JavaScriptで2次元配列を扱う方法

    C言語を少しだけやっていました。 JavaScriptで2次元配列作りたいのですが、上手くいきません。 var array[5][5]; array[0][0] = 21; document.write(array[0][0]); ↑を実行しても「21」と表示されません。 new array()とか色々試しましたが上手くいかないので質問させていただきました。 教えてください!

  • delphi 2次元配列がわかりません

    将棋盤の様な9×9マスの配列宣言を a1 : array[1..9, 1..9] of Integer ;とした場合、a1に値を 代入するにはどんな式が考えられますか? a1 : array [1..9] of integer = (394,448,502,556,612,664,721,774,827); みたいに直接括弧内で 代入も可能でしょうか? 超初心者で頭の中で混乱してしまいます。 どなたかお助け下さい。

  • 2次元配列の文字"列"の初期化方法

    こまかな話しかもしれないのですが、2次元配列の文字列代入で、 char *array2 = {"Jan", "Feb", "March"}; //NG はNGで char *array2[3] = {"jan,", ...}; //OK なのはどうしてなのでしょうか? 1: "[3]"は明示しなくとも代入される値から分かるという理由で省略してはいけないのでしょうか? また、 2: 一次元の場合 char *array = "aaaaa"; とできるのにどうして2次元ではNGなのか、がピンと来ません。 すみませんが、宜しくお願い致します。

  • 二次元配列でソートがしたい

    二次元配列でソートがしたい 二次元配列でソートがしたい 開発環境:Visual Web Developer 2008 express 言語:Visual Basic 上記開発環境でWebアプリケーションを開発中です。 TextBoxを縦20行横10列の表形式に配置し、左から2番目の列に入力された数値をキーに、昇順に並べ替えができるような入力フォームを作成していますが、参考になるようなサイトが見つからなかったので、どなたか参考になるサイトやサンプルロジックを教えて頂けないでしょうか? よろしくお願いします。

  • 2次元配列の宣言について

    文字列の配列の場合 Dim m As Variant Dim moji As String m=Array("aa","bb","cc","dd",・・・) moji=m(1) とすれば"bb"がmojiに代入されるのはわかるのですが これを二次元配列(3行4列)にする場合どのように 宣言(Dim~や、Array~)等はどのように記述すればよろしいですか? 基本的な質問でごめんなさい。 よろしくお願いします。

  • 二次元配列について

    二次元配列が確保(?)されてなくて困っています。 プログラム内で、以下のように宣言するのですが、 #define MM 1025 //プログラム6行目 #define NN 10 //7行目 double y[MM][NN]; //17行目 y[0][0] = 3.0; //28行目 Visual Studio.NET のデバッグツールの「ウォッチ」で、 y[0][0]に代入された値を確認しようとすると、 エラー:インデックス'0'は、ポインタ/配列'y'の範囲外にあります と、表示され、中身を確認することができません。 それどころか、プログラムの後半98行目を境に、 y[0][0]の値が上書きされてしまいます。 x[k] = x[0] + k*h; //98行目 ここから、察するにメモリがちゃんと確保されていないと、 思うのですが、どうすればいいかわからず、困っています。 どなたかご教授をお願いいたします。 環境 OS : Windows XP 開発環境 : Visual Studio.NET

専門家に質問してみよう