多次元配列の画面出力

このQ&Aのポイント
  • PHPで多次元配列の画面出力方法とは?
  • 変数の認識を終わらせずに出力する方法とは?
  • 可読性向上のために注意すべき点は?
回答を見る
  • ベストアンサー

多次元配列の画面出力

PHP 5.1.6で、 <?php $ary[0][0]="ABC"; $ary[0][1]="DEF"; echo "$ary[0][0],$ary[0][1]"; ?> だと Array[0],Array[1] と出力されます。$ary[0]までで変数の認識を終わらせちゃってるようです。 <?php $ary[0][0]="ABC"; $ary[0][1]="DEF"; $a=$ary[0][0]; $b=$ary[0][1]; echo "$a,$b"; ?> とすると ABC,DEF と出力されます。 上のような記載方法でうまく出力する方法はないものでしょうか? 実用で困ってる訳でも変数をケチっている訳でもないんですが、些細な可読性の面で。

  • PHP
  • 回答数1
  • ありがとう数1

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

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

<?php $ary[0][0]="ABC"; $ary[0][1]="DEF"; echo "(1)".$ary[0][0].",".$ary[0][1]."<br>\n"; echo "(2){$ary[0][0]},{$ary[0][1]}<br>\n"; ?> (1)の方がいいけど、(2)でやるなら{$変数}

ts3m-ickw
質問者

お礼

さっそくの回答をありがとうです。 配列変数をダブルクォーテーションの外に出すか { } で囲めば良かったのですね。 どうしてダブルクォーテーションの中でうまくできないのか腑に落ちませんが、助かりました。

関連するQ&A

  • 2次元の連想配列を順次読み込みするには?

    PHP初心者です。 元の連想配列($ary1)   Array ( [2004] => Array ( [03] => 03 [02] => 02 ) [2003] => Array ( [12] => 12 ) ) $ary1の値だけを$ary2に抽出する。   $ary2 = array_values($ary1); すると、こんな内容になります。   Array ( [0] => Array ( [03] => 03 [02] => 02 ) [1] => Array ( [12] => 12 ) ) ここまで来ると上位階層は$ary2[0]、[1]で読めそうですが、 下位階層まで考えると$ary2[0][03]、$ary2[0][02]になっています。 これを$ary2[0][0]、$ary2[0][1]という風に順次読み込みたいのですが、 いい方法が見つかりません。 つまり2次元の下位階層も[0]~のインデックスとしたいのです。

    • ベストアンサー
    • PHP
  • 2次元配列について

    プログラミング初心者です。先日以下の例文を問い合わせさせていただきました。 答えとして$abc[0] に $def を代入して、$abc[1] に $abcという配列([0] に $def の内容がある)が代入されると教えていただき、実際確認しました。二次元配列入れ子のようになるのは解ったのですが、 どのような場合に使うのでしょうか? ホームページなどの画面に表示するのに使ったりするのでしょうか? それともデータベースからデータを抽出して一時的に、何らかのかたちで格納 したりする場合によく使われるのでしょうか? この例文だけどこかにあったので、実際どのように使うのかイメージできません。 すみません。教えてください。 <?php $def = 'test'; $abc = array(); $abc[] = $def; $abc[] = $abc; print '<pre>'; print_r($abc); print '</pre>';

    • ベストアンサー
    • PHP
  • 多次元配列?配列のキー?変数の型?

    PHP勉強中のものです。 予定通りの動作にならんく四苦八苦しています。 どのように修正すれば予定通りになるのか考え方のアドバイスなどお願いします。 処理したいこと 変数$xxxの先頭の文字と最後の文字をsubstr()で取り出し$aaaと$bbbに別けそれぞれ代入しキーとして多次元配列に代入した配列要素を指定してechoで出力したい 試してみたこと $aaa1と$bbb1に直接整数を代入してみたところ、echoで出力された キーになる変数を整数型として変数に代入してみたが希望通りの動作にならなかった。 なにかアドバイス頂けると助かります。 $array = array( "0" =>array("あいうえお","かきくけこ"), "1" =>array("さしすせそ") ); $xxx = "0-1"; $aaa = substr($xxx,0,1); $bbb = substr($xxx,2); $aaa = (int)$aaa; $bbb = (int)$bbb; echo $array[$aaa][$bbb]; //出力されない $aaa1 = 0; $bbb1 = 1; echo $array[$aaa1][$bbb1]; //出力された $aaa = (int)$aaa; $bbb = (int)$bbb; echo $array[$aaa][$bbb]; //出力されない

    • ベストアンサー
    • PHP
  • phpでオブジェクト化に挑戦中です。配列がうまく扱えません。

    このようなサンプルプログラムを作ってみました どうやら配列がまずいようなのですが、どうすればよいでしょうか。 <?php class TEST2{ var $b1; } class TEST{ var $a1=TEST2; function printout(){ $this->$a1[0]->b1='123 '; $this->$a1[1]->b1='abc '; $this->$a1[2]->b1='DEF '; } } $c = new TEST; $c->printout(); echo $c->$a1[0]->b1; echo $c->$a1[1]->b1; echo $c->$a1[2]->b1; ?> ちなみに出力結果は DEF DEF DEF となりました。 疑問1.なぜ全部同じ結果になるのか 疑問2.配列だと echo $c->$a1[2]->b1; のように、$a1と、$マークがないと動かない。$を取ると強制終了される。 お願いします。へんてこな質問ですみません。

    • 締切済み
    • PHP
  • Smartyで多次元配列をスマートに出力するには?

    Smartyで多次元配列をスマートに出力するには? ■php側 $array1[1] = 'ショッピング案内'; $array1[2] = 'サイト案内'; $array1[3] = 'お問い合わせ'; $array2[1][1] = '0101'; $array2[1][2] = '0102'; $array2[1][3] = '0103'; $array2[1][4] = '0104'; $array2[1][5] = '0105'; $array2[2][1] = '0201'; $array2[2][2] = '0202'; $array2[2][3] = '0203'; $array2[2][4] = '0204'; $array2[2][5] = '0205'; $array2[2][6] = '0206'; $array2[2][7] = '0207'; $array2[3][1] = '0301'; $array2[3][2] = '0302'; $array2[3][3] = '0303'; $array2[3][4] = '0304'; $array3[1][1] = 'お買い物の流れ'; $array3[1][2] = 'お支払いについて'; $array3[1][3] = '配送について'; $array3[1][4] = '返品・交換について'; $array3[1][5] = 'メールマガジンについて'; $array3[2][1] = 'サイトマップ'; $array3[2][2] = 'このサイトについて'; $array3[2][3] = '販売者概要'; $array3[2][4] = '特定商取引法表記'; $array3[2][5] = 'プライバシーポリシー'; $array3[2][6] = '免責事項'; $array3[2][7] = 'リンクについて'; $array3[3][1] = 'FAQ(よくある質問)'; $array3[3][2] = 'お買い物について質問'; $array3[3][3] = '個別商品について質問'; $array3[3][4] = 'お問合せ対応時間'; $sub_menu = array($array1, $array2, $array3 ); $smarty->assign('SUB_MENU', $sub_menu); ■テンプレート側のサンプル <dl class="side_column"> <dt class="block_title">{$SUB_MENU[0][1]}</dt> <dd class="block_contents"> <ul class="sub_menu"> <li><a href="index.php?contents={$SUB_MENU[1][1][1]}">{$SUB_MENU[2][1][1]}</a></li> <li><a href="index.php?contents={$SUB_MENU[1][1][2]}">{$SUB_MENU[2][1][2]}</a></li> <li><a href="index.php?contents={$SUB_MENU[1][1][3]}">{$SUB_MENU[2][1][3]}</a></li> <li><a href="index.php?contents={$SUB_MENU[1][1][4]}">{$SUB_MENU[2][1][4]}</a></li> <li><a href="index.php?contents={$SUB_MENU[1][1][5]}">{$SUB_MENU[2][1][5]}</a></li> </ul> </dd> </dl> テンプレート側の繰り返し処理の仕方をご教示くださいませ。 もっと効率よくスマートに実現できる方法がありましたらそちらもよろしくお願いします。 どうぞよろしくお願いします。

    • 締切済み
    • PHP
  • クラス内での二次元配列への値の代入について

    以下のソースで、配列変数$a[0][0]にbを代入して、メソッドprintAでそれをprintしようとしていますが、"Parse error: syntax error, unexpected '$a' (T_VARIABLE), expecting function (T_FUNCTION) in C:\xampp\htdocs\a.php on line 4"というエラーが出ます。 どうすれば、$a[0][0]にbを代入して、メソッドprintAでそれをprintできるか教えてください。 phpのバージョンは5.5.15です。 <?php class A{ private $a = array(); $a[0][0] = 'b'; function printA(){ print $this->a[0][0]; } } $x = new A(); echo $x->printA(); ?>

    • ベストアンサー
    • PHP
  • 配列の結合

    変数1 Array ( [A] => あいうえお ) 変数2 Array ( [B] => わおん ) というような二つの変数の配列を Array (   [A] => あいうえお   [B] => わおん ) というように、ひとつの変数内に結合する方法はないでしょうか?

    • ベストアンサー
    • PHP
  • 多次元配列をエンコードする関数を作るには?

    多次元配列でも文字コードのエンコードができる関数を 作ろうとしていますが、エラーで躓いています。 自分自身の関数を再帰で呼び出しているので、array_map関数上? 引数が1つしか持てないので、$valueを array($ary, "SJIS", "EUC-JP")として渡しています。 これを実行すると、以下のエラーになります。 何かよい方法はありますか? PHP Notice: Undefined offset: 0 in C:\test.php on line 10 function mb_convert_encoding_deep($value) { //var_dump($value); if( is_array($value) ){ if( is_array($value[0]) ){ array_map(__FUNCTION__, $value); }else{ $value[0] = mb_convert($value[0], $value[1], $value[2]); } }else{ die("ここは通過しないと思いますが自信なし"); } return $value; } $ary = mb_convert_encoding_deep( array($ary, "SJIS", "EUC-JP") ); array_mapの用法でも間違っているのでしょうか?

    • ベストアンサー
    • PHP
  • 文字列を配列にしたい

    お世話になります。 PHP4.3.9を利用しているのですが、以下のような文字列を分割して、求める形の配列に入れたいのですが、何か良い方法はありますでしょうか? ■文字列 abc=123&def=456&ghi=789 ■このような形にしたいと思っています↓ $hoge = array(   "abc"=>"123",   "def"=>"456",   "ghi"=>"789" ) ヒントだけでも結構ですので、ご教示いただけると幸いです。宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHP4で、メンバ変数の値を忘れてしまう2

    PHP4での質問です。 前の質問がわかりにくかったので、書き直しました。 オブジェクト指向的にいかがなものかとは思いますが、オブジェクトのメンバ変数を直接外部から変更したいと思います。 ---------<a.php>---------- class myClass {   var member = 0; } ---------<b.php>---------- $ary_c = array(); for ($i=0; $i<10; $i++) {   $c = new myClass();   $c->member = 1;   echo "(1)c->member=".$c->member;   array_push($ary_c, $c); } foreach ($ary_c as $c) {   echo "(2)c->member=".$c->member; } ------------------------------ 以上の様なソースで、(1)のデバッグライトでは、メンバ変数memberの値は1であるのに、(2)のデバッグライトでは、0になってしまいます。 この原因がお分かりのかた、もしよろしければ知恵をお貸し下さい。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう