PHP | 1月 26th, 2008
PHPで可変長の引数を渡したいときは、 call_user_func_array という関数を使う。可変長の変数を配列に入れて、第1引数に文字列で関数名を書いて、第2引数に可変長の引数を渡す。
例えば、sprintf みたいな書き方でエスケープした文字列を作る関数を定義してみると、以下のように書く。
// パラメータをエスケープするための処理。(MySQLにつないでからじゃないと使えない) function escape_query($condition_ary) { _db_connect(); // フォーマットを取得(第1引数) $format = array_shift($condition_ary); // 第2引数以降が、エスケープすべき値 $escaped_value_ary = array(); foreach($condition_ary as $_val) { $_escaped_val = mysql_real_escape_string($_val); array_push($escaped_value_ary, $_escaped_val); } array_unshift($escaped_value_ary, $format); return call_user_func_array('sprintf', $escaped_value_ary); } //呼ぶとき Railsぽく $conditions = array("select * from fruits where color = '%s' and name = '%s'", $_POST['color'], $_POST['name']); $escaped_str = escape_query($conditions);




