phpで多次元配列を使いたいのですが、うまく取得することができません。
<?php $arry = [ [ 'タイトル', [ 'ジャンル01', 'ジャンル02', 'ジャンル03' ], 'テキスト' ], [ 'タイトル', [ 'ジャンル01', 'ジャンル02', 'ジャンル03' ], 'テキスト' ] ]; ?>
これで$arry[0][0][x]で出力しようとしても何も返ってきません。
そもそも配列の書き方が間違っているのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
目的のキーが違います。
var_dump
を使い調べましょう。
php
1<?php 2$arry = [ 3 [ 4 'タイトル', 5 [ 'ジャンル01', 'ジャンル02', 'ジャンル03' ], 6 'テキスト' 7 ], 8 [ 9 'タイトル', 10 [ 'ジャンル01', 'ジャンル02', 'ジャンル03' ], 11 'テキスト' 12 ] 13]; 14var_dump($arry); 15 16
array(2) { [0]=> array(3) { [0]=> string(12) "タイトル" [1]=> array(3) { [0]=> string(14) "ジャンル01" [1]=> string(14) "ジャンル02" [2]=> string(14) "ジャンル03" } [2]=> string(12) "テキスト" } [1]=> array(3) { [0]=> string(12) "タイトル" [1]=> array(3) { [0]=> string(14) "ジャンル01" [1]=> string(14) "ジャンル02" [2]=> string(14) "ジャンル03" } [2]=> string(12) "テキスト" } }
投稿2018/08/02 09:04
総合スコア705
0
現状だとechoかprintを使って出力しようとしているのでしょうか?そして、エラーレポートでnoticeが出ないようになっていませんか?現状の配列だと配列や文字列が入れ子になっているため、処理しようとしても
notice Array to string conversion
のような忠告が出るはずです。要は、配列を格納しようとして呼び出した変数に、文字列を入れようとしているからです。
具体的に言えば、$arry[0][0]だとタイトルという値を返しますが、$arry[0][0][x]は三次元目の配列のインデックス値がない(配列でないため)ために値を返せません。
これを処理する場合、階層が決まりきっているならば、
PHP
1foreach($arry as $ary){ 2 foreach($ary as $ar){ 3 if(is_array($ar) ){ 4 foreach($ar as $a){ 5 $tmp = $a; 6 } 7 }else{ 8 $tmp = $a; 9 } 10 } 11} 12 echo $tmp;
これで最低限の処理はできます。ただ、今回を見た限り、タイトル、ジャンル、テキストと要素がグループ化されているので、
PHP
1$arry = [ 2 [ 3 "title" => "タイトル1", 4 "genre" =>["ジャンル01", "ジャンル02", "ジャンル03"], 5 "text" => "テキスト2" 6 ], 7 [ 8 "title" => "タイトル2", 9 "genre" =>["ジャンル01", "ジャンル02", "ジャンル03"], 10 "text" => "テキスト2" 11 ], 12 ];
このように連想配列として定義してから処理した方がベターだと思います。
投稿2018/08/03 02:45
総合スコア3624
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
php
1<?php 2 3ini_set('display_errors', true); 4error_reporting(E_ALL); 5 6$arry = [ 7 [ 8 'タイトル', 9 ['ジャンル01', 'ジャンル02', 'ジャンル03'], 10 'テキスト' 11 ], 12 [ 13 'タイトル', 14 ['ジャンル01', 'ジャンル02', 'ジャンル03'], 15 'テキスト' 16 ] 17]; 18 19var_dump($arry[0][0]); 20var_dump($arry[0][1][0]); 21var_dump($arry[0][1][1]); 22var_dump($arry[0][1][2]); 23var_dump($arry[0][2]); 24 25var_dump($arry[1][0]); 26var_dump($arry[1][1][0]); 27var_dump($arry[1][1][1]); 28var_dump($arry[1][1][2]); 29var_dump($arry[1][2]); 30
投稿2018/08/02 09:07
退会済みユーザー
総合スコア0
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/08/03 05:43