プロが教える店舗&オフィスのセキュリティ対策術

例えば、
array(
 [hoge1-1] => hoge1-1_value
 [hoge1-2] => array(
  [hoge2-1] => hoge2-1_value
  [hoge2-2] => hoge2-2_value
  [hoge2-3] => array(
   [hoge3-1] => hoge3-1_value
  )
 )
)
のような多次元配列で、すべてのvalueに同じ処理を施すには
foreachのなかにforeachを書いて処理するしかないのでしょうか。
もっと単純に、すべてのファイルを一度に処理できるようにする方法は
ないでしょうか?

A 回答 (1件)

どんな処理か分かりませんが、


再帰構造をもつようなclassなりfunctionを作って、そいつにぶち込んでやればいいだけです。

function foo($param){
  if(is_array($param)){//配列かどうか
    foreach($param as $k => $v){//配列だったらforeachでぶん回す
      $param[$k]=foo($v);//自分自身を再帰
    }
  }else{//配列じゃない場合、実際に処理させたいことを書く
    $param = $param.'処理させたい';//ここで、やりたい処理をする
  }
  return $param;//返す
}

$array = foo($array);

こんな感じで、配列が続く限り追いかけていきます。
けど、PHPの場合 100回とか200回くらい続く再帰の場合はアホになるのでほどほどに・・・
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
関数の中に自らの、関数を入れてループさせる!

思いつきませんでした!
目からうろこです。

お礼日時:2008/07/11 18:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!