* PHP/array_map()を使って複雑な構造の変数を処理 [#qeea1c92]

** array_map()とは? [#hb6374df]
 function func1($val){
     return $val * 10;
 }
 $arr = array(1,2,3);
 $arr2 = array_map('func1',$arr);
 print_r($arr2); // => [ 10, 20, 30 ]

**複雑な構造の変数を処理する [#h4670eab]
配列の中に(スカラ)変数や配列が混じってる場合にarray_map()を適用するには以下のようにする。

 function func1($val){
     if (is_array($val)){
        $val = array_map('func1',$val);
     }else{
        $val = $val * 10;
     }
     return $val;
 }
 $arr = array('var1'=>1,'var2'=>2,'var3'=>array('var4'=>4,'var5'=>5));
 print_r($arr); // => [ 1, 2, [ 4, 5 ] ]
 $arr2 = array_map('func1',$arr);
 print_r($arr2); // => [ 10, 20,  [ 40, 50 ] ]

**$_REQUEST [#q5f84b85]
実際の使い所として、$_REQUESTの値をまとめてHTMLエスケープする場合には以下のようにする。
 function esc($val){
     if (is_array($val)){
        $val = array_map('esc',$val);
     }else{
        $val = htmlspecialchars($val);
     }
     return $val;
 }
 $req = array_map('esc',$_REQUEST);

破壊的にする場合には、
 function esc(&$val){
     if (is_array($val)){
        array_map('esc',&$val);
     }else{
        $val = htmlspecialchars($val);
     }
 }


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS