PHP自定义函数用function来定义,函数包括函数名,参数,以及代码块,其中函数名命名规则和变量命名规则相似,不能以数字开头,参数可以有多个,也可以没有。
函数内要调用函数外的变量时,有两种方法,第一中在函数内,在变量前添加global,用来声明变量是一个全局变量。第二种,用$GLOBALS['变量名']用引用,这个是超全局变量,在全局变量定义的时候会自动添加到这个数组内,用变量名=>变量值的方式。
一般情况下,函数有返回值,用return表示,函数内return以后的代码都不会执行,当省略了return时,函数的返回值为NULL。
函数的参数可以定义默认值,即在调用的时候,如果参数没有传值则使用默认值。
实例
//函数声明方式 function functionName($par1,$par2,...,$parn){ //代码块 } //函数内引用函数外的变量 $name1='lucy'; $name2='bob'; function name(){ global $name1; $name2=$GLOBALS['name2']; return $name1 .'<br>'. $name2; } echo name();
运行实例 »
点击 "运行实例" 按钮查看在线实例
作业:写一个函数,计算不定参数的乘积, 要求使用到剩余参数来实现
实例
//使用func_get_args()获取参数列表,使用foreach循环计算结果,我发现虽然不定参数本身是一个数组,但是在函数内使用func_get_args()获取参数列表时,会把参数和不定参数打包为一个数组,本来我以为不定参数会成为数组内的一个元素,导致这个数组成为二维数组。 function ride1($a,$b,$c,...$params){ echo '<pre>'; $list=func_get_args(); print_r($list); echo '</pre>'; echo '<br>'; $ride=1; foreach($list as $value){ $ride*=$value; } return $ride; } echo ride1(1,2,3,4,5,6); echo '<hr>'; //使用array_push()添加元素到数组内,它的返回值是数组内元素的个数,再利用内置函数array_product()计算数组的积。 function ride2($a,$b,$c,...$params){ $num=array_push($params,$a,$b,$c); //array_push()将要添加的元素依次添加到数组的前面 echo '<pre>'; print_r($params); echo '<br>$params数组的元素个数为'.$num.'个'; echo '</pre>'; return array_product($params); } echo ride2(1,2,3,4,5,6); echo '<hr>'; //使用array_unshift()添加元素到数组内,它的返回值是数组内元素的个数,再利用内置函数array_product()计算数组的积。 function ride3($a,$b,$c,...$params){ $num=array_unshift($params,$a,$b,$c);//array_unshift()将要添加的元素依次添加到数组的前面 echo '<pre>'; print_r($params); echo '<br>$params数组的元素个数为'.$num.'个'; echo '</pre>'; return array_product($params); } echo ride3(1,2,3,4,5,6);
运行实例 »
点击 "运行实例" 按钮查看在线实例