PHP函数变量参数

PHP函数变量参数,php,function,Php,Function,我想使用更新函数来更新数据库中的配置文件。现在我有了全部20个字段,我想制作一个功能,在这里我可以说我发送了什么数据 例如: function send_data($a, $b, $c, $d, $e, $id){ $sql = "UPDATE table SET a=$a, b=$b, c=$c, d=$d, e=$e WHERE id = $id"; mysql_query($sql); } 现在我想调用这个函数,例如只给出A和D 这可能是吗?如果是,如何使用?考虑使用阵

我想使用更新函数来更新数据库中的配置文件。现在我有了全部20个字段,我想制作一个功能,在这里我可以说我发送了什么数据

例如:

function send_data($a, $b, $c, $d, $e, $id){
    $sql = "UPDATE table SET a=$a, b=$b, c=$c, d=$d, e=$e  WHERE id = $id";
    mysql_query($sql);
}
现在我想调用这个函数,例如只给出A和D


这可能是吗?如果是,如何使用?

考虑使用阵列:

function send_data($data, $id) {
    $build = array();
    foreach($data as $k=>$v) {
        $build[] = "`".$k."` = '".mysql_real_escape_string($v)."'";
    }
    $sql = "UPDATE `table` SET ".implode(", ",$build)." WHERE `id`=".intval($id);
    mysql_query($sql);
}

在PHP中,可以使用默认参数,例如:

function send_data($a, $b = 5, $c = 6, $d = "foo")
function send_data($args) {
    do_something_with($args['a']);
}
然后可以通过只指定参数而不指定默认值来调用,因此可以使用1-4个参数调用此函数。问题是,您仍然必须在正确的位置提供参数,因此不能只指定
$a
$d
。例如,以下所有内容都是有效的

send_data(5);                    // Actually send_data(5, 5, 6, "foo");
send_data(5, 3);                 // Actually send_data(5, 3, 6, "foo");
send_data(5, 1, 9);              // Actually send_data(5, 3, 9, "foo");
send_data(5, 1, 9, "bar");       // Actually send_data(5, 3, 9, "bar");
PHP也不支持关键字参数,因此另一种方法是传入数组,例如:

function send_data($a, $b = 5, $c = 6, $d = "foo")
function send_data($args) {
    do_something_with($args['a']);
}

您可以通过定义声明中的值在函数中使用默认参数,但据我所知,您不能“跳过”参数,例如当您有队列$a、$b、$c时,您不能调用类似myfunction(valueforA、、valueforC)的函数。从一开始到最后一个你想设置的参数,你必须给出每一个参数。类似于myfunction(valueforA、NULL、ValueforC)

在您的情况下,您可以使用以下内容:

function send_data($a=NULL, $b=NULL, $c=NULL, $d=NULL, $e=NULL, $id=NULL){
    $sql = "UPDATE table SET a=$a, b=$b, c=$c, d=$d, e=$e  WHERE id = $id";
    mysql_query($sql);
像这样使用它

send_data(1, 2, NULL, NULL, NULL, 5);

@PeterdeBeer。新代码应该使用或来代替。@Chris什么是最好的mysqli或PDO?@peterdbeer,绝对是基于意见的,但我建议使用PDO。