自定义函数
- 什么是自定义函数
- 不是系统预定义的, 是程序员根据自身业务需求自己定义的函数
- 自定义函数的优点是一次定义,多次使用;
声明自定义函数
function functionName ( [$arg[=value][,…]] ) {
…
…
}
- 函数名称和 PHP 中的其它标识符命名规则相同;
- 函数名称建议遵守“驼峰标记法”;
- 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
<?php
$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
<?php
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次
<?php
function say($str,$num){
if($num < 10){
echo say($str,$num+1);
}
return $str.(11-$num)."次!<br/>";
}
echo say("爱你",1);
- 递归一般会用于目录的遍历
小作业: 使用递归, 改写之前的累加函数...
<?php
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();
单选题
下列代码输出的结果正确的是()(选择一项)


预习 字符串函数, 日期函数, 数学函数
参见:
字符串函数: www.w3school.com.cn/php/php_ref…