自定义函数
什么是自定义函数
不是系统预定义的, 是程序员根据自身业务需求自己定义的函数
自定义函数的优点是一次定义,多次使用;
声明自定义函数
function functionName ( [$arg[=value][,…]] ) {
…
…
}
复制代码
函数名称和 PHP 中的其它标识符命名规则相同;
函数名称建议遵守“驼峰标记法”;
PHP 中的所有函数和类都具有全局作用域;
PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数;
function add($a,$b){
return $a+$b;
}
function add($a,$b,$c){
return $a+$b+$c;
}
echo add(1,1,1); // 会报错
复制代码
调用自定义函数
[$变量名称 = ] functionName ( [value,…] )
复制代码
$a = demo(); ==> 调用函数, 并使用变量$a, 接收返回值
demo(); ==> 只是调用函数
单选题
下列选项中不符合PHP自定义函数标准的是?()(选择一项)
多选题
以下函数会输出‘apple’的是()(选择两项)
变量作用域
局部变量
局部变量是在函数内部中定义的变量;
它的作用域为函数定义范围内;
全局变量
全局变量是在函数外部定义的变量;
全局变量的作用域从定义处一直到文件结尾;
PHP 中全局变量在函数中使用时必须声明为 global;
使用 $GLOBALS 替代 global
$a = "apple"; // 全局的
function demo(){
global $a;
echo $a;
}
demo();
复制代码
超全局变量
$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
$_REQUEST
$_ENV
多选题
下图代码输出的内容选项中描述正确的是()(选择两项)
单选题
以下全局变量使用正确的是?()(选择一项)
参数
通过参数可以传递信息到函数内部;
一个函数可以有零个或多个参数;多个参数之间以逗号作为分隔符;
参数的数据类型可以为任意数据类型(资源除外);
有默认值的参数称为可选参数,否则称为必选参数;
默认参数必须放在任何必选参数的右侧;
单选题
选项中结果正确的是()(选择一项)
单选题
以下代码输出结果正确的是?()(选择一项)
单选题
以下代码输出的结果正确的是?()(选择一项)
形参和实参
形参是指函数定义时参数;
实参是指函数调用时的参数;
实参和形参在数量上,顺序上应严格一致;
单选题
下列代码的结果正确的是()(选择一项)
单选题
下列代码的结果正确的是()(选择一项)
按值传递
按值传递参数是指直接传递参数值,也可以是变量;
按值传递会在函数内部改变参数的值,但它并不会改变函数外部的值;
单选题
下列代码输出的结果是()(选择一项)
单选题
下列代码输出的结果是()(选择一项)
按引用传递
引用传值必须在参数的前面加上 & 符号;
引用传值的参数值只能是变量;
引用传值会改变函数外部的值;
引用指向原始变量;
单选题
以下代码输出结果正确的是?()(选择一项)
单选题
以下代码输出结果正确的是?()(选择一项)
可变数量的参数
PHP 的自定义函数中支持可变数量的参数;
在 PHP 5.5 及更早版本中,使用函数 func_num_args(),和 func_get_args() 实现;
在 PHP 5.6 及以上的版本中,由 ... 语法实现;
单选题
func_num_args的作用是?()(选择一项)
单选题
以下代码输出结果正确的是?()(选择一项)
返回值
return 语句将立即中止函数的运行,并且将控制权交回调用该函数的代码行;
如果省略 return语句,则返回值为 NULL;
返回值可以是包括数组和对象的任意类型(资源除外);
函数只能有一个返回值;
如果需要返回多个值怎么办?
多选题
下列选项中输出内容为8的是()(选择两项)
单选题
下列选项中输出结果正确的是()(选择一项)
小作业
定义一个函数, 接收两个参数, 返回第一个参数到最后一个参数的累加
sequence_summation(1,100)返回5050
function sequence_summation($a,$b){
$sum = 0;
for ($i=$a; $i <= $b; $i++) {
$sum+=$i;
}
return $sum;
}
echo sequence_summation(1,100);
复制代码
匿名函数
没有名称的函数
一般用于回调函数, 回调函数, 都是匿名的
一个函数作为另一个函数的参数就是回调函数
call_user_func(), 第一个参数是一个函数, 剩下的都是该函数的参数
多选题
下列选项输出内容是‘imooc’的是()(选择两项)
内部函数
在函数中声明函数
只有外部函数调用了, 内部函数才能使用
单选题
以下代码输出结果正确的是()(选择一项)
多选题
以下选项会报错的是()(选择两项)
递归函数
自己调用自己
必须设置一个终止条件, 否则无限递归, 相当于死循环
猜测一下代码的执行过程...
使用递归, 实现爱你100次
function say($str,$num){
if($num < 10){
echo say($str,$num+1);
}
return $str.(11-$num)."次!
";
}
echo say("爱你",1);
复制代码
递归一般会用于目录的遍历
小作业: 使用递归, 改写之前的累加函数...
function sequence_summation($a,$b){
if ($b == $a) {
return $a;
}else{
return $a+sequence_summation($tmp = $a+1,$b);
}
}
echo sequence_summation(1,100);
复制代码
单选题
下列代码输出的是()(选择一项)
单选题
以下代码输出的结果正确的是?()(选择一项)
可变函数/变量函数
变量名后加()
function hello(){
echo "hello world";
}
$a = "hello";
$a();
复制代码
单选题
下列代码输出的结果正确的是()(选择一项)
预习 字符串函数, 日期函数, 数学函数
参见: