PHP/array_map()を使って複雑な構造の変数を処理
array_map()とは?
function func1($val){ return $val * 10; } $arr = array(1,2,3); $arr2 = array_map('func1',$arr); print_r($arr2); // => [ 10, 20, 30 ]
複雑な構造の変数を処理する
配列の中に(スカラ)変数や配列が混じってる場合に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
実際の使い所として、$_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); } }