Php默认功能第一个值

时间:2013-11-28 16:27:36

标签: php

在php默认函数中有以下代码的任何解决方案吗?

function sum($num1=20,$num2=10)
{
     $sum=$num1+$num2;
     echo $sum;
}
sum('',40);

这里的问题是第一个默认值不起作用。例如,如果我写sum(40);这将给我ans 40 + 10 = 50,但我希望ans将是40 + 20 = 60。需要使用第一个默认值。

4 个答案:

答案 0 :(得分:2)

php中函数调用的参数从左到右分配。所以,你不能真正skip第一个参数,只给出第二个参数。这是函数调用在php中工作的方式,你无法改变它。

但是,您可以通过提供default values inside the function body来解决此问题。

首先检查是否有任何参数为null,然后为其赋值如下:

<?php

function sum($num1,$num2)
{
    //giving the arguments default values
    $num1==null ? $num1 = 20 : null;
    $num2==null ? $num2 = 10 : null;

    $sum=$num1+$num2;
    echo $sum;
}

sum(null, 40); // echoes 60
sum(40, null); // echoes 50

?>

答案 1 :(得分:1)

如果您的问题是关于PHP函数中参数的默认值,那么它就不会那样工作。

function sum($num1=20,$num2=10)
{
     $sum=$num1+$num2;
     echo $sum;
}
sum('',40);

您的函数总和需要两个参数。您通过添加默认值使这些参数可选。考虑这些默认值  如果没有参数。

这意味着

sum();

有效,并将同时使用您的默认参数。它将回应10 + 20的结果,即。 30。

现在你可以试试

sum(70);

这将回显80,因为您的第一个参数已定义(70)而第二个参数未定义,因此$ num2采用默认值,即10。

除此之外,您不能仅为第二个参数输入值,并使用默认值使第一个参数。

编辑:我做了一个快速研究,找到了一个很好的方法来完成这项工作:PHP Function with Optional Parameters

答案 2 :(得分:1)

这不优雅,但应该有效:

function sum($num1=null,$num2=null)
{
    $num1 = ( empty($num1) || is_null($num1) ) ? 20 : $num1;
    $num2 = ( empty($num2) || is_null($num2) ) ? 10 : $num2;

    $sum = $num1 + $num2;
  echo $sum;
}

sum('', 40)

答案 3 :(得分:0)

这样可以正常工作:

function sum($num1 = null, $num2 = null)
{
    $nums = array_filter(array($num1, $num2, 20, 10));
    echo array_shift($nums) + array_shift($nums);
}