Home > PHP

関数の引数に配列を渡す

 PHPの関数(function)に渡せる引数はスカラーだけではありません。配列をまとめて渡して、返り値も同様に配列で取り出せます。
function test_array ($post_array) {
    foreach ($post_array as $k => $v) {
       $v = strip_tags($v);
    }
    return $post_array;
}

$re = array ();
$re =  test_array ($_POST);

foreach ($re as $k => $v) {
    print $k.'='.$v.'<br />';
}
 例では関数test_arrayに$_POSTを渡しています。test_arrayでは$_POSTの情報を$post_arrayで受けています。$post_arrayは$_POSTと同じ情報をもっていますが、関数内ではローカル変数となってスコープが違います。
 関数内ではHTMLタグをはぎ取る動作をしてから再び$post_arrayに戻してやる作業をしています。戻した値はreturnで返します。
 $re =  test_array ($_POST);の$reの値はそのまま配列となって関数内で処理した値が戻ります。最後にforeachで洗い出してみます。意外に簡単にできました。

 Perlのサブルーチンは@_というショートカットを用いて常に配列で処理しますが、PHPはその文脈によって正しく処理してくれるようです。そもそも変数の記号がスカラーも配列も$で同じなので逆にいうと文脈で判断しないとむちゃくちゃになってしまいます。