1.总结函数的返回值,参数?
1)函数返回值就是你所调用的函数返回给你的值。一般采用return来返回,return只能返回单个值,后面的代码不会被执行,可以返回整形,字符串,浮点,布尔,计算等等,如果返回多个值可以返回数组、对象,返回长度最长40位,
2)参数为函数的调用者提供一个接口去改变函数体的执行行为
- 函数里面的参数叫形参,调用的时候叫实参,形参有几个,调用的时候实参就需要有几个
- 形参是可以有默认置的,参数列表是从左往右传值的,如果不传参数或少传参数都会使用默认值
2.实例演绎你对课上匿名函数以及变量作用域问题的理解?
1)匿名函数就是闭包,受作用域限制,闭包允许临时创建一个没有名称的函数
匿名函数实例
<?php $city = function ( $a, $b ) { return "{$a}来自{$b}" ; }; echo $city( '缘亦', '安徽' ); ?>
点击 "运行实例" 按钮查看在线实例
2)变量的作用域也叫函数的作用域,全局变量函数体外声明的变量,在函数体内是无法访问,解决办法用global $GLOBALS
局部变量是在函数体内声明的变量,也可以叫内部变量,只能在函数体内使用,外部无法调用
闭包作用域无法调用函数体外的变量,可以用use关键字来解决,闭包作为函数的返回值
变量作用域实例
<?php $city = '安徽'; $name = '缘亦'; // 外部定义变量,这两个变量在函数体内无法访问,匿名函数通过use可以访问函数体外的变量 $form = function() use ( $name, $city ) { return sprintf( '%s是来自%s的', $name, $city ); }; echo $form(); ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
随堂笔记
函数是全局成员,完成特定功能的代码块(命名函数是全局成员)
命名空间解决全局命名的问题
有名称的要命名函数,没有名称的叫匿名函数
1、系统函数,不用定义,只需要调用即可
2、自定义函数
strtoupper();全转为大写
strlen();控制字符串的长度,一般在调用标题简介或限制名称、密码的长度
return只能返回单个值,后面的代码不会被执行,可以返回对象,布尔,整形,字符串,浮点,数组,计算等,返回长度最长40位,如果返回多个值可以返回数组、对象
function 函数名称([参数列表 -形参]){
函数体
return(瑞滕嗯) 返回值
}
例:计算两个数的商
function divide($one,$two){
return $one/$two;
}
echo divide(99,9);
数组只能用print_r和var_dump
public(怕不类可)公有的访问
对象的访问采用$obj->name
多个值以json字条串的方式返回
json_encode()系统预定义函数 ,将数组转为json字符串,json字符串是一种数据交换形式
json_decode()将json字符串转为数组,第2个参数设为true,拿到数组json_decode($res,true);
参数可以用,隔开
.=相当于字符串的连接符
函数里面的参数叫形参,调用的时候叫实参,形参有几个,调用 的时候实参就需要有几个
形参是可以有默认置的
1、参数为函数的调用者提供一个接口去改变函数体的执行行为
2、函数的执行的任务是固定的
参数列表是从左往右传值的
如果不传参数或少传参数都会使用默认值
剩余函数适应于参数的个数不确定用...三个点后面跟上参数
剩余参数通常用于数据库的连接
当剩余参数用在参数列表 表示收集的作用
function_exists();检测一个函数是否存在,解决重命名的问题
array_sum()计算数组各个成员的和
剩余参数用在函数的调用 表达式中,表演展开的作用
数据库连接
function connect(...$arg){
return new PDO($arg[0],$arg[2],$arg[3])
}
$pdo = connect('mysql:dbname=news','root','root')
if($pdo) echo "数据库连接成功";
匿名函数就是闭包,受作用域限制,闭包作用域问题 闭包closure(渴楼色儿) 允许临时创建一个没有名称的函数
匿名函数可以用变量参定义,变量后面用();
$定义变量名 = function($变量);
命名函数是全局成员,有名称的函数,不受作用域限制
变量的作用域也叫函数的作用域
全局变量 函数体外声明的变量,在函数体内是无法访问
解决办法用global $GLOBALS (哥捞保)
局部变量是在函数体内声明的变量,也可以叫内部变量,只能在函数体内使用,外部无法调用
闭包作用域无法调用函数体外的变量,可以用use关键字来解决
闭包作为函数的返回值
外面是单引号里面就用双引号,反之也是一样
函数的返回值是一个闭包,则无法直接输出,需要再次赋值,可采用转为变量后再输出 $闭包(变量);另外一个方法是输出 变量('闭包')('变量');
闭包可以改变就量上下文的值,直接通过echo $变量是无法改成,需要通过引用传递 &$变量