在php默认函数中,以下代码有解决方案吗?
function sum($num1=20,$num2=10)
{
$sum=$num1+$num2;
echo $sum;
}
sum('',40);
这里的问题是第一个默认值不起作用。例如,如果我写sum(40);它会给我一个40+10=50,但我希望答案是40+20=60。需要使用第一个默认值。
skip
第一个论点,只给出第二个。这是函数调用在php中的工作方式,您不能更改它
但是,您可以通过给出default values inside the function body
来解决这个问题。
首先检查是否有任何参数为空,然后为其赋值,如下所示:
<?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
?>
这不是优雅的,但应该有效:
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)
如果您的问题是关于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 sum($num1 = null, $num2 = null)
{
$nums = array_filter(array($num1, $num2, 20, 10));
echo array_shift($nums) + array_shift($nums);
}