批改状态:合格
老师批语:
<?php//声明在函数之外的成员,默认是全局成员$name ='张三';$age = 10;function stus(){//只有调用时,才会创建函数作用域//访问外部成员方法1 global//访问外部成员方法2 $GLOBALS['name']//私有变量访问可以通过返回的方式$cla ='三年级';global $name;return $name.$GLOBALS['age'].$cla;}echo stus();
没有名字的函数叫做匿名函数,匿名函数叫做闭包
<?php//闭包:可以访问函数外部的自有变量//用关键字 use//匿名函数需要访问外部变量时用use关键字即可,支持引用传参$name = '张三';$age = 24;$stu = function () use ($name, &$age) {$age = 42;return $name . '的年龄是' . $age . '岁';};echo $stu();echo $age;//use禁止使用的三种参数//1.超全局$GLOBAL 2.$this 3.和当前参数同名不让用
<?php//php单线程,同步执行//回调函数call_user_fanc(),将耗时的函数变成异步执行,以免同步阻塞//使用场景:数据库链接function stu($name){return $name;}echo stu('李四');echo call_user_func('stu','张三');echo call_user_func_array('stu',['张三']);
<?php//静态变量:不会随着函数作用域的消失而消失,会进入下一次的函数调用中//作用:函数多次调用中共享数据,场景:CMS系统栏目的无限分类function stu(){static $i = 1;echo $i;$i++;}echo stu();echo stu();echo stu();
函数只允许一个返回值,如果想返回多值有三种方法1.数组2.对象3.序列化字符串
<?phpfunction stumess(){return ['name' => '张三', 'age' => '25', 'cla' => '大学'];}echo stumess()['name'] === '张三' ? stumess()['age'] : 1;
<?phpfunction stumess(){return new class (){public $name = '张三';public $age = 28;};}$stu = stumess();var_dump($stu);printf('name = %s,age = %d',$stu->name,$stu->age);
2.31 php内置的序列化函数serialize()
<?phpfunction stumess(){return serialize(['name' => '张三', 'age' => '25', 'cla' => '大学']);}//可将结果保存到文档里file_put_contents('wenzi.txt',stumess());//使用时还原var_dump(unserialize(stumess()));
2.32转换为通用的JSON序列化字符串函数json_encode()
<?phpfunction stumess(){return json_encode(['name' => '张三', 'age' => '25', 'cla' => '大学'],JSON_UNESCAPED_UNICODE);}//第二个参数可以将中文字符还原出来,JSON_UNESCAPED_UNICODE,如果不加会显示对应utf-8编码字符echo stumess();//还原JSON字符串函数 json_decode()$str = json_decode(stumess());var_dump($str);//json_decode() 默认解析为对象,如果需要解析成数组,需要加第二个参数ture$str = json_decode(stumess(),true);var_dump($str);
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号