• ベストアンサー

配列のキーに配列を使う場合

初歩的な事なのかもしれないのですが、 $abc = $a["$b["c"]"]; のように配列のキーに配列を使いたいのですが、上記だとエラーが出ます。 どのように記述すればよいでしょうか?

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>$abc = $a["$b["c"]"]; 完全に文法エラーですね、ダブルクォーテーションが競合してます $b["c"]="x"だったときに$a["x"]を得たいのでしょうか?なら $abc = $a[$b["c"]];とするか$abc = $a["{$b["c"]}"]; でいけます

kurarigu
質問者

お礼

お返事ありがとうございます。 コメント頂いた通りの内容で実現出来ました。 ダブルクォーテーションやクォーテーション無しでもキー指定出来たり、ダブルクォーテーション内で中括弧が使えるのですね・・・。 今までわからない事はわからないままに、ヒアドキュメントを利用したり、$c=$b["c"]; とした後、$abc=$a["$c"];などとしていたので、大変勉強になりました。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 配列を比較して同じものがあった場合にそのKEYを返す

    二つの配列を比較して同じ値が入っていた場合、そのKEYを配列に入れたいと思います。 (例)$aと$bを比較して同じ値が入っているときに$aのkeyを$cに格納したい。 $a = array("","","山","","川","海","","富士山","空","",""); $b = array("川","","","","","海","","富士山","空",""); ※空白は無視したい。 この場合 $c = array("4","5","7","8"); のようにしたいと思います。 どなたか教えてください。

    • ベストアンサー
    • PHP
  • 複数のキーで配列をソートするには?

    配列が複数あって、キーを3つでソートする場合には どのようにしたらよろしいでしょうか? @a = ("A","B","C","B","A" ); @b = ("Y","X","Z","X","Z" ); @c = (4,3,5,2,1); 結果として、 A,Y,4 A,Z,1 B,X,2 B,X,3 C,Z,5 のように表示したいのですが、2次元配列でないと無理でしょうか? ちょっと分かりにくいかもしれませんが、Excelなどで、3つのキーで 優先順位を設定してソートするようなイメージです。

    • ベストアンサー
    • Perl
  • 配列がとびとびである場合の書き方

    excelの関数で(配列1,配列2)と指定するとき、配列がとびとびである場合、 =関数((B5:B6,B8:B14,B18,B20,B22:B23,B27),(C5:C6,C8:C14,C18,C20,C22:C23,C27)) このような書き方で試してみてもエラー(#Value)が返ってきてしまいます。 他に""で囲ってみましたが上手くいきませんでした。 どうすればよろしいのでしょうか? 色々調べてどうしても分からなかったのでここで質問させて下さい。

  • スカラーを配列に変換

    $abc = <<END_OF_MESSAGE; A B C END_OF_MESSAGE; これをそのまま @abc = (A, B, C) という配列にして使いたいのですが、どうすればいいのでしょうか?

    • ベストアンサー
    • Perl
  • VBAで配列の計算

    VBAで配列同士の計算をすることはできますか? たとえば、配列A,B,Cがあったときに C=A+Bみたいな記述はできるのでしょうか?

  • 多次元配列のキーをつないで文字列にする

    PHP5.4の配列で仮に次のようなものがあったとします。 <?php $arr['A']['B']['C']['D'] = null; $arr['A']['B']['D']['C'] = null; $arr['A']['B']['D'] = null; それぞれのキー名をつなぎあわせてそれぞれ「A, B, C, D」「A, B, D, C」「A, B, D」といった文字列に変換したいのですが、どのようにしたら実現できるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • void*型の配列について

    void* a[2]; void* b = a; void* c[2] = (void *[2])b; error C2440: '型キャスト' : 'void *' から 'void *[2]' に変換できません。 配列型への変換はありませんが、参照またはポインタから配列への変換があります。 void*型にした a を再度void*型の配列に戻すにはどのように記述すればよいでしょうか? 環境はXP(SP3)のVS2008 MFC です。 宜しくお願いいたします。

  • JSで配列同士の重複チェック

    いつもお世話になっております表題の通りJSで配列同士(連想配列の値)で重複した値があったらまとめて再度配列に格納したいのですが、プログラムの書き方が思いつきません、、 教えて頂けないでしょうか?? 例、イメージ) 配列A = 配列B[key1=>1,key2=>2],配列C[key1=>1,key2=>2],配列D[key1=>2,Key2=>4]; この場合処理をして返ってくる期待値は 配列A[配列B[key1=>1,key2=>2],配列D[key1=>2,key2=>4]] ※配列Cは配列Bと中身が同じなため削除された という形で帰ってきてほしいです。 少し時間が無くて完成されたサンプルコードなど教えて頂けると幸いです どうぞよろしくお願いします!

  • JavaScriptの連想配列について

    myArray = new Array();  myArray["A001"] = new Array();   myArray["A001"]["B001"] = "B001";   myArray["A001"]["B002"] = new Array();    myArray["A001"]["B002"]["C001"] = "C001";    myArray["A001"]["B002"]["C002"] = "C002";  myArray["A002"] = "A002"; JavaScriptの連想配列について質問させて頂きます。 例えば上記のような配列があったとして、値とキーはそのままで "C001" と "C002" の"B002"配列への格納順序だけ入れ替えたい場合、 どのように実装すればよろしいでしょうか? ちなみにキーや値はサンプルで実際にはsort出来るルールはありません。。。 ※入れ替え後のイメージ --------------------------------------------------------------------- myArray = new Array();  myArray["A001"] = new Array();   myArray["A001"]["B001"] = "B001";   myArray["A001"]["B002"] = new Array();    myArray["A001"]["B002"]["C002"] = "C002"; ←格納順序が    myArray["A001"]["B002"]["C001"] = "C001";  入れ替わった  myArray["A002"] = "A002"; ---------------------------------------------------------------------

  • 関数に配列を渡して値を変える

    関数に配列を渡して値を書き換えたいのですが、文字配列である char b[10]="abc"; の書き換えが綺麗にできません。 どのように書いたら綺麗にできますか? void hen(int *a, char *b,char **c){ *a=7; b[0]='d'; b[1]='e'; b[2]='f'; //こういう書き方なら渡せるけれどb[10]="def"; 見たいな書き方で一行で値を渡す方法はないものかな? *c="jkl"; } void main (void){ int a=5; char b[10]="abc"; char *c="ghi"; hen(&a,b,&c); printf("%d %s %s\n",a,b,c); }