函数可以设定参数,也可以留空不进行设定。 1.当php函数设定形参,但是引用时实参不给,情况如下: 1 !doctype html public -//w3c//dtd xhtml 1.0 transitional//en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd 2 html xmlns=http://www
函数可以设定参数,也可以留空不进行设定。
1.当php函数设定形参,但是引用时实参不给,情况如下:
1 span>public -//w3c//dtd xhtml 1.0 transitional//en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd> 2 3 4 5 php函数测试 6 7 8 9 php 10 /*********************11 *author:瞎猫碰上死老虎***12 *date:2/6/2015********13 *********************/14 15 function asd($a,$b,$c){16 echo $a+$b+$c;17 }18 19 asd();20 21 22 ?>23 24
结果为:
1 warning: missing argument 1 for asd(), called in f:\phpfind\www\ceshi.php on line 19 and defined in f:\phpfind\www\ceshi.php on line 15 2 3 warning: missing argument 2 for asd(), called in f:\phpfind\www\ceshi.php on line 19 and defined in f:\phpfind\www\ceshi.php on line 15 4 5 warning: missing argument 3 for asd(), called in f:\phpfind\www\ceshi.php on line 19 and defined in f:\phpfind\www\ceshi.php on line 15 6 7 notice: undefined variable: b in f:\phpfind\www\ceshi.php on line 16 8 9 notice: undefined variable: a in f:\phpfind\www\ceshi.php on line 1610 11 notice: undefined variable: c in f:\phpfind\www\ceshi.php on line 1612 0
结论:会报错,但是也能显示出结果来。为0。
2.函数有形参,引用时,第一个实参什么都没有用逗号隔开,后面给实参。这个时候语法错误。这种写法在php是不支持的。如果你想这样,可以给null。示例如下:
1 span>public -//w3c//dtd xhtml 1.0 transitional//en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd> 2 3 4 5 php函数测试 6 7 8 9 php 10 /*********************11 *author:瞎猫碰上死老虎***12 *date:2/6/2015********13 *********************/14 15 function asd($a,$b,$c){16 echo $a+$b+$c;17 }18 19 asd(null,3,7);20 21 22 ?>23 24
结果为:
1 10
3.现在来进行测试形参设置了默认参数的情况,情况如下:
1 span>public -//w3c//dtd xhtml 1.0 transitional//en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd> 2 3 4 5 php函数测试 6 7 8 9 php 10 /*********************11 *author:瞎猫碰上死老虎***12 *date:2/6/2015********13 *********************/14 15 function asd($a,$b=2,$c=5){16 echo $a+$b+$c;17 }18 19 asd(3,7);20 21 22 ?>23 24
结果为:
1 15
结论:如果有默认形参,实参可以不给。实参的顺序是按照形参的顺序来的。如果函数参数中,参数的后面有默认形参,那么实参可以不给出对应的参数。函数将按默认形参代入计算。
4.再来看一种情况。这个时候三个参数中,就中间设置了默认形参。如果给了两个实参,这个情况是怎么样的呢。
1 span>public -//w3c//dtd xhtml 1.0 transitional//en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd> 2 3 4 5 php函数测试 6 7 8 9 php 10 /*********************11 *author:瞎猫碰上死老虎***12 *date:2/6/2015********13 *********************/14 15 function asd($a,$b=2,$c){16 echo $a+$b+$c;17 }18 19 asd(8,9);20 21 22 ?>23 24
结果为:
1 warning: missing argument 3 for asd(), called in f:\phpfind\www\ceshi.php on line 19 and defined in f:\phpfind\www\ceshi.php on line 152 3 notice: undefined variable: c in f:\phpfind\www\ceshi.php on line 164 17
结论:引用函数的时候,实参的顺序跟形参一一对应。如果无默认形参,不给相应的实参则会报错。当有默认形参在函数的参数组后面,这个时候省略是不会出现错误的,函数将按照默认形参参与运算。