函数作用域
<?php

// 1.php: 全局作用域

// 声明在函数外部的成员,默认就是全局成员

  1. $name = '你好';
  2. $res = 'php';

// 2.php 函数作用域: 只有调用它的时候才会创建

  1. function a($id): string
  2. {
  3. $a=$id;
  4. return $a;
  5. }

// php函数作用域: 只有调用它的时候才会创建

// 此时函数里面的$a成员才会被创建并访问

// 由于在函数内部无法访问函数外部的成员,但如果想在函数内部访问全局或者外部的成员有以下种方式可以在函数内部访问外部成员

  1. global

    1. function b(): string
    2. {
    3. // 用global将外部成员导入函数内部
    4. global $name;
    5. global $res;
    6. return $name.$res;
    7. }
  1. $GLOBALS,超全局数组不受作用域限制

    1. function c():string
    2. {
    3. return '1: '.$GLOBALS['name'].' 2: '.$GLOBALS['res'];
    4. }

php闭包: 匿名函数

// 1.闭包: 就是匿名函数,可以访问函数外部的自由变量也就是父作用域中的变量

  1. $name='张三';
  2. $age ='20';

// 用use关键字将外部成员引入函数即可

  1. $a =function() use($name,$age){
  2. return '姓名: '. $name .'年龄: '.$age;
  3. };
  4. echo $a();
  5. echo '<hr>';

// 2.闭包支持引用传参: 只需在参数前加 &

// 闭包中将引用参数更新后,会实时的映射到外部的原始参数中 实现实时更新外部数据

  1. $b =function($age1) use($name,&$age){
  2. $age=$age1;
  3. return '姓名: '. $name .'年龄: '.$age1;
  4. };
  5. echo $b(18);
  6. echo '<hr>';

// 注意:use禁止使用以下三种参数

// 1. 超全局不让用: $_GET

// 2. $this

// 3. 与当前参数重名不让用

// 3.闭包经常用作函数的返回值

  1. function b($name){
  2. // 返回一个函数,php闭包函数最佳使用场景
  3. // 但要记住闭包函数必须返回
  4. return function ($age)use($name){
  5. return sprintf('姓名:%s 年龄:%s',$name,$age);
  6. };
  7. }
  8. echo b('王五')('18');

json格式的字符串

转为通用的json格式的字符串
这样就可以与其它编程语言进行数据交换,例如与前端js,java,python…
JSON_UNESCAPED_UNICODE 为中文 不需要转码

  1. function d(){
  2. return json_encode(['res' => '1', 'msg' => '登录成功'],JSON_UNESCAPED_UNICODE);
  3. }
  4. $res1 = d();
  5. // 如果当前脚本接收到一个前端或其它接口发送过来的json格式的数据,可以进行解析
  6. // 解析的目的是将外部的json还原成php能够处理的数据类型
  7. $str = json_decode($res1);
  8. if($str -> res==='1'){
  9. printf('%s',$str->msg);
  10. }

如果不喜欢对象的方式访问,也可以使用数组方式
给 json_decode()传入第二个参数 : true

  1. $str1 = json_decode($res1, true);
  2. if($str1['res']==='1'){
  3. printf('%s',$str1['msg']);
  4. }

更多相关文章

  1. “重定义;不同的基类型”,可能是顺序问题
  2. 在游戏运营行业,Serverless 如何解决数据采集分析痛点?
  3. 初识 jQuery 与$()工厂函数的四种用法,四种好用的 getter/setter
  4. 演示类的声明、实例化、静态成员扩展等,以及trait功能、与父类的
  5. PHP基础:字符串函数的作用和练习
  6. 有待完善的扫雷程序
  7. js 中的构造函数与常用的 dom 元素操作(dom 元素的增删改查)
  8. js基础知识
  9. 20个基础函数的练习

随机推荐

  1. Android编译系统详解(一)
  2. Android Shell Cmd
  3. 上接系出名门Android(8) - 控件(View)之T
  4. Android 博客园客户端 (一) 基本界面
  5. Android: 系统默认音量
  6. android 自定义闪退Dialog 收集闪退信息
  7. How to Create QuickAction Dialog in An
  8. android 软件源码
  9. Android照相功能驱动层中HAL的实现(基于OK
  10. android中使用HTTP协议和TCP协议实现上传