人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPで質問です。

多次元配列の要素の内容を置換するプログラムを作りたいと思っておりますが、うまくいきません。

$array['result']['test']の様に二次元と決まっていれば、簡単なのですが、四次元の場合も、三次元の場合もあります。

$array['result']['test']['test2']
$array['result']['test']['test2']['test3']

配列内の全ての要素に置換処理を加えるには、どうすればよろしいでしょうか?

●質問者: makocan
●カテゴリ:インターネット ウェブ制作
✍キーワード:test プログラム 三次元 二次元 四次元
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● takonixi
●23ポイント

http://www.shigeweb.jp/php/project_p/?section=first&page=var


再帰呼び出しで実行する関数を用意すればできます

配列データであるなら配列内の要素に対して再帰用の関数を呼び出し

単一データであればその置換用の関数で処理し

置換したデータを戻り値として戻せばできます

function change( $data ){

if( is_array($data) ){

//配列

foreach($data as $key => $value){

//自分自身を呼び出す

$data[$key] = change($value);

}

}else{

//単一データ

$data = "置換する関数"($data);

}

//処理結果を返す

return $data;

}

$data = $change( $data );


2 ● withgod
●23ポイント

再帰使って処理してみたらどうでしょ。

こんな感じで。

http://rider.withgod.jp/tmp/qhatena/1189649157.phps

結果はこんな感じです。

http://rider.withgod.jp/tmp/qhatena/1189649157.txt


3 ● KUROX
●22ポイント

(1)4次元配列が最大なら、すべて4次元配列として使ったら

どうでしょう

(2)4次元配列が本当に必要かアルゴリズムとデータの格納

方法を再検証する

(3)連想配列を使う必要性かだるのか再検討

(4)?Arrayオブジェクトとか使ってもよさそうな?

http://q.hatena.ne.jp/answer


4 ● toyoshi
●22ポイント

これを使われるのが良いと思います。

http://us3.php.net/manual/ja/function.array-walk-recursive.php

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ