zoukankan      html  css  js  c++  java
  • php学习笔记5--php中的可变变量,可变函数及匿名函数


    可变变量指的是:将一个变量的值再次当做一个变量名从而得到另外一个变量的值。
    如:
    $name = 'dqrcsc';
    $myname = 'name'; //$myname的值碰巧是另一个变量的变量名
    echo $name; //输出$name的值 'dqrcsc'
    echo $myname; //输出$myname的值 'name'
    echo $$myname; //得到$myname的值 'name',通过$再将其解析为一个变量 $name,从而输出$name的值 'dqrcsc'

    匿名函数:即没有名字的函数
    php中的函数的定义在编译阶段,会被系统存放到代码区,可以通过函数名在代码区中找到该函数的代码。
    若没有名字,则需要通过变量来保存函数的内存地址。
    $func = function(){
    echo 'test';
    };
    var_dump($func); //object(Closure)#1 这是一个闭包
    保存了函数的地址,之后要怎么调用该匿名函数呢?
    回想函数的调用形式:myfunc();在函数名后面跟着一对括号,表示调用该函数。匿名函数调用形式与之相同
    $func(); //表示调用该变量所指向的匿名函数
    既然加上()就被认为是调用函数,这里就自然而然的出现了可变函数的概念

    可变函数:如同可变变量一样,一个变量保存了函数的名字,取得该函数的值即函数的名字,然后将其当做函数解析。
    如:
    function test(){
    echo 'test';
    }
    $func = 'test';
    $func(); //$func取得该变量的值'test',后面加上(),被当做是函数test()去调用。

    若是匿名函数呢?
    $func = function(){
    $name = 'dqrcsc';
    echo $name;
    };
    $myfunc = 'func'; //$myfunc是一个可变变量,其存储的是$func的变量名
    $$myfunc(); //$$myfunc解析可变变量,获得$func的值,后面加上(),当做函数去调用,便输出'dqrcsc'了

    由上可知,可变变量与可变函数的原理都是一样的,只是解析方式不同而已,一个变量想将它解析为可变变量,再加上个$符号即可,
    想将它解析为可变函数,后面加上()即可。
    那么问题来了,函数和变量可以同名吗?答案是可以的。
    function test(){
    echo 'function';
    }
    $test = 'var'; //与函数同名的变量
    $myvar = 'test';//定义一个变量刚好存放的值为变量名和函数名
    echo $$myvar; //将其解析为可变变量,输出'var'
    $myvar(); //将其解析为可变函数,输出'function'

  • 相关阅读:
    Swift3 重写一个带占位符的textView
    Swift3 使用系统UIAlertView方法做吐司效果
    Swift3 页面顶部实现拉伸效果代码
    Swift3 倒计时按钮扩展
    iOS 获取当前对象所在的VC
    SpringBoot在IDEA下使用JPA
    hibernate 异常a different object with the same identifier value was already associated with the session
    SpringCloud IDEA 教学 番外篇 后台运行Eureka服务注册中心
    SpringCloud IDEA 教学 (五) 断路器控制台(HystrixDashboard)
    SpringCloud IDEA 教学 (四) 断路器(Hystrix)
  • 原文地址:https://www.cnblogs.com/dqrcsc/p/4390971.html
Copyright © 2011-2022 走看看