php 重定义系统函数,[PHP从小白到大牛]-014 PHP自定义函数

自定义函数

什么是自定义函数

不是系统预定义的, 是程序员根据自身业务需求自己定义的函数

自定义函数的优点是一次定义,多次使用;

声明自定义函数

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自定义函数标准的是?()(选择一项)

48f5c43676ae73cd182a36e52e383802.png

多选题

以下函数会输出‘apple’的是()(选择两项)

f2c6ef47130d088c4754991cfd5fc066.png

变量作用域

局部变量

局部变量是在函数内部中定义的变量;

它的作用域为函数定义范围内;

全局变量

全局变量是在函数外部定义的变量;

全局变量的作用域从定义处一直到文件结尾;

PHP 中全局变量在函数中使用时必须声明为 global;

使用 $GLOBALS 替代 global

$a = "apple"; // 全局的

function demo(){

global $a;

echo $a;

}

demo();

复制代码

超全局变量

$GLOBALS

$_SERVER

$_GET

$_POST

$_FILES

$_COOKIE

$_SESSION

$_REQUEST

$_ENV

多选题

下图代码输出的内容选项中描述正确的是()(选择两项)

d5b1918f835d29b9ec1f1f306db1439c.png

1cccfca6a9008a889c7281084703c24b.png

单选题

以下全局变量使用正确的是?()(选择一项)

09e19359e690f6dab3c1ffe79d0ab887.png

参数

通过参数可以传递信息到函数内部;

一个函数可以有零个或多个参数;多个参数之间以逗号作为分隔符;

参数的数据类型可以为任意数据类型(资源除外);

有默认值的参数称为可选参数,否则称为必选参数;

默认参数必须放在任何必选参数的右侧;

0e20fecf9e34a710b27a2aae6f54c51e.png

单选题

选项中结果正确的是()(选择一项)

b052eb14a692028cb5acf8574808dd05.png

ddee45884e32951745bd81f40a0dcbb5.png

单选题

以下代码输出结果正确的是?()(选择一项)

05cdf3a4fd5ff0839c3c3e6547e21156.png

8c434838f9a6dad188683e8817713ef2.png

单选题

以下代码输出的结果正确的是?()(选择一项)

f6c801fddb12f173eba42d7f59f71741.png

e78848ae693a790b8c674b0d32004abe.png

形参和实参

形参是指函数定义时参数;

实参是指函数调用时的参数;

实参和形参在数量上,顺序上应严格一致;

单选题

下列代码的结果正确的是()(选择一项)

23c0d7569713143d83d92cd402acb2c0.png

ef5686188205e5c52f73f89bae79fb97.png

单选题

下列代码的结果正确的是()(选择一项)

09d776d8fa98a908066879f4e4c512e1.png

ccff6ddee87281f845473bd1b43bb7c0.png

按值传递

按值传递参数是指直接传递参数值,也可以是变量;

按值传递会在函数内部改变参数的值,但它并不会改变函数外部的值;

单选题

下列代码输出的结果是()(选择一项)

92d312cc929804f3d338d7d35af45c15.png

ae097c6f7939e60a8ab7aa069a444d9d.png

单选题

下列代码输出的结果是()(选择一项)

d6241b16ad4550019353975b6e58a757.png

8ef5c72a2d4fd15bf5a7dd600fab31d6.png

按引用传递

引用传值必须在参数的前面加上 & 符号;

引用传值的参数值只能是变量;

引用传值会改变函数外部的值;

引用指向原始变量;

单选题

以下代码输出结果正确的是?()(选择一项)

bfedcedc32e8cbbce9ae6dfd85fe4679.png

fb89d2fefdd90ab609d35ed13819c169.png

单选题

以下代码输出结果正确的是?()(选择一项)

5c7b72e2a912cb7abd9d9cecfc8fce98.png

339e74341728f7ec3dc6909f108383f3.png

可变数量的参数

PHP 的自定义函数中支持可变数量的参数;

在 PHP 5.5 及更早版本中,使用函数 func_num_args(),和 func_get_args() 实现;

在 PHP 5.6 及以上的版本中,由 ... 语法实现;

单选题

func_num_args的作用是?()(选择一项)

904ff2155e51f750ae1b9eb7aa5e1d8d.png

单选题

以下代码输出结果正确的是?()(选择一项)

51273704ccb1e0bfdddcf17a38277547.png

8efdb6562b3e8ae4470e7cf666d2652a.png

返回值

return 语句将立即中止函数的运行,并且将控制权交回调用该函数的代码行;

如果省略 return语句,则返回值为 NULL;

返回值可以是包括数组和对象的任意类型(资源除外);

函数只能有一个返回值;

如果需要返回多个值怎么办?

多选题

下列选项中输出内容为8的是()(选择两项)

515f1f9b135ed21d0af5675bac1b7d68.png

单选题

下列选项中输出结果正确的是()(选择一项)

000397dc4fe087426c413bdda95eecad.png

e75f0d717c4a77e13082f614c4c73826.png

小作业

定义一个函数, 接收两个参数, 返回第一个参数到最后一个参数的累加

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’的是()(选择两项)

3f5da0eeb20deff1cc0c1a666388132f.png

内部函数

在函数中声明函数

只有外部函数调用了, 内部函数才能使用

单选题

以下代码输出结果正确的是()(选择一项)

bcfed8d4b58eb21b7f47dc5450cbf458.png

ce36e34abb0cc9b73384515ef68c95c2.png

多选题

以下选项会报错的是()(选择两项)

3241d6d4e660f94232c7982d211bc262.png

递归函数

自己调用自己

2ac13b636507d0dee6c254129cf6d7ce.png

2cd6ef8bf65ed82a23fbb3e122f021b6.png

必须设置一个终止条件, 否则无限递归, 相当于死循环

猜测一下代码的执行过程...

4bd41f2bcc236d63eb50498571adf6bd.png

ffd69cc39199524ca21bc36bb15ecb3a.png

使用递归, 实现爱你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);

复制代码

单选题

下列代码输出的是()(选择一项)

5ac5531ec653b3f1ed32a8988f050d70.png

fa0b3f724e77a3e19699c970c370ca9c.png

单选题

以下代码输出的结果正确的是?()(选择一项)

bb9f6185827abf635a75683733585fd5.png

4f7bbaaee519c3297771ff22f0db3327.png

可变函数/变量函数

变量名后加()

function hello(){

echo "hello world";

}

$a = "hello";

$a();

复制代码

单选题

下列代码输出的结果正确的是()(选择一项)

cf43f2489b515bbb000a559e13a906d8.png

d67b9068ee31267dfd825b8648a1a979.png

预习 字符串函数, 日期函数, 数学函数

参见:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值