PHPで質問です。


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

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

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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/09/16 02:56:18
  • 終了:2007/09/23 03:00:05

回答(4件)

id:takonixi No.1

takonixi回答回数7ベストアンサー獲得回数22007/09/16 03:32:56

ポイント23pt

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 );

id:withgod No.2

withgod回答回数32ベストアンサー獲得回数12007/09/16 03:45:50

ポイント23pt

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

こんな感じで。

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

結果はこんな感じです。

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

id:KUROX No.3

KUROX回答回数3542ベストアンサー獲得回数1402007/09/16 04:59:24

ポイント22pt

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

   どうでしょう

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

   方法を再検証する

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

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

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

id:toyoshi No.4

toyoshi回答回数67ベストアンサー獲得回数12007/09/18 02:29:50

ポイント22pt

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

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

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

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

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

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

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