PHP函数变量参数

时间:2014-04-15 13:56:18

标签: 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

这可以吗?如果是这样的话?

4 个答案:

答案 0 :(得分:4)

考虑使用数组:

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);
}

答案 1 :(得分:0)

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

function send_data($a, $b = 5, $c = 6, $d = "foo")

然后可以通过仅指定没有默认值的参数来调用,因此可以使用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($args) {
    do_something_with($args['a']);
}

答案 2 :(得分:0)

function send_data( $setData )
  {
    $setVals = array();
    foreach( $setData as $field => $val )
    {
      $value      = mysql_real_escape_string($val);
      $setVals[]  = $field . "='{$value}'";
    }

    $setString = implode(', ', $setVals);

    mysql_query('UPDATE table SET ' . $setString)
  }

答案 3 :(得分:0)

您可以通过定义声明中的值来使用函数中的默认参数,但据我所知,您不能“跳过”参数,例如当您有队列$ 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);

请参阅 http://www.php.net/manual/en/functions.arguments.php