将所有参数传递给另一个函数

2022-08-30 21:54:44

我有两个这样的函数:

function mysql_safe_query($format) {
    $args = array_slice(func_get_args(),1);
    $args = array_map('mysql_safe_string',$args);
    $query = vsprintf($format,$args);
    $result = mysql_query($query);
    if($result === false) echo '<div class="mysql-error">',mysql_error(),'<br/>',$query,'</div>';
    return $result;
}

function mysql_row_exists() {
    $result = mysql_safe_query(func_get_args());
    return mysql_num_rows($result) > 0;
}

问题在于第二个函数不起作用,因为它将 args 作为数组传递给第一个函数,而它期望它们作为不同的参数。有没有办法解决这个问题,最好不修改?mysql_safe_query


答案 1

如何使用:

$args = func_get_args();
call_user_func_array('mysql_safe_query', $args);

答案 2

注意:贝在 PHP 5.6 中,您现在可以执行以下操作:

function mysql_row_exists(...$args) {
    $result = mysql_safe_query(...$args);
    return mysql_num_rows($result) > 0;
}

此外,对于未来的读者,mysql_*已被弃用 - 不要使用这些函数。


推荐