phpについて


配列の中身を下記のコードの結果で表示される内容と同じように表示したいのですが、
仮に配列が10階層、20階層になっている場合、下記のコードを増やさなくてはなりません。

そこで、配列が何十階層になっていても同じような結果を表示するようにするコードを教えて下さい。
関数を作って試してはいるのですが、頭がこんがらがって私には作れませんでした。

よろしくお願いします。

foreach($data as $k1 => $v1){
if(!is_array($v1)){ print "\$data['$k1'] => $v1<br />\n"; continue;}
foreach($v1 as $k2 => $v2){
if(!is_array($v2)){ print "\$data['$k1']['$k2'] => $v2<br />\n"; continue;}
foreach($v2 as $k3 => $v3){
print "\$data['$k1']['$k2']['$k3'] => $v3<br />\n";
}
}
}

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/03/14 18:14:54
  • 終了:2010/03/14 19:03:21

ベストアンサー

id:Bombastus No.1

ホーエンハイム回答回数409ベストアンサー獲得回数522010/03/14 18:56:24

ポイント60pt

再帰呼び出しを使ってみました。こんな感じでどうでしょう。

<?php
//サンプル配列
$samp = array(array(array(1,2,3),array(4,5)), array(6,7,8));
var_dump($samp);

//再帰呼び出し
function recursive($arr, $str) {
    if (is_array($arr)) {
        foreach ($arr as $key=>$val) {
            recursive($val, "{$str}['{$key}']");
        }
    } else {
        print "{$str} => {$arr}<br />\n";
    }
}
//メインプログラム
recursive($samp, '$data');
?>
id:worldtravel

素晴らしい!!

これを作りたかったんです。

自分では訳がわからなく頭が燃えそうでした。

脳が足らないんですね〜 ^^;

ありがとうございました。

2010/03/14 19:03:16

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません