批改状态:合格
老师批语:作业有布置了这么多吗? 不过多写总是好的
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);点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号