在php默认函数中有以下代码的任何解决方案吗?
function sum($num1=20,$num2=10)
{
$sum=$num1+$num2;
echo $sum;
}
sum('',40);
这里的问题是第一个默认值不起作用。例如,如果我写sum(40);这将给我ans 40 + 10 = 50,但我希望ans将是40 + 20 = 60。需要使用第一个默认值。
答案 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);
}