可变函数|学习笔记

简介: 快速学习可变函数

开发者学堂课程【PHP 基础入门课程(下)可变函数】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/710/detail/12640


可变函数


内容介绍:

一、可变函数学习目标及其概念

二、可变函数使用步骤

三、可变函数的举例及其证明

四、可变函数使用流程分析

五.可变函数小结


一、可变函数学习目标及其概念

学习目标:了解可变函数的意义,掌握可变函数的使用;

可变函数概念:即一个变量所保存的值刚好是另外一个函数的名字,那么可以通过变量直接访问函数,这里要注意两个点:

1.变量的值是一个函数名(字符串)

2.变量+()就可以当做函数名访问函数


二、可变函数使用步骤

1.定义一个函数

2.声明一个变量并赋值,值刚好是函数名

3.变量+()访问函数


三、可变函数的举例及其证明

实例:

比如说有一个函数叫做 display,同时定义了一个变量 display 的值,此时利用一个变量名加上一个“()”实现 display 函数的一个访问,原理是$var 是一个变量,加上一个“()”就等于一个 display,把 display 写出来,拼凑一个“()”,当系统检测到“()”的时候那么就是个函数,系统就去寻找是否有 display 的这个函数,有就调用。

代码如下:

建立可变函数的文件

<?php

#可变函数

//定义函数,输出函数的名字

Function display(){

Echo_FUNCTION_;

}

//定义一个变量    

$var =_’display’_;

//访问可变函数,就是变量变函数,输出 display

$var();

打开浏览器,把文件名输上去;可以看到下图的结果,就说明调用可变函数成功:

image.png

证明:

输入如下代码,看下是否走到内部的函数里面:

Function display(){

Echo ‘inner’;

Echo_FUNCTION_;

}

到浏览器刷新一下,可以看到:innerdisplay 的字样,就说明是正确的,这可以说变量实现了函数的访问。

实用是如何使用的,通常情况下是将自定义的函数作为系统函数或者其他位置的回调函数(callback)实用:

取一个数的绝对值,绝对值是什么,如果它小于0,就取一个负,否则就取它自己,那么得到的就是一个正的值,然后要求两个绝对值的和,a 和 b,但是不确定它们两个是否是一个正数,所以需要一个函数,外部传进来,专门用来求绝对值,利用外部传来的函数,然后把它变作一个调用,代码如下:

//去一个数的绝对值

Function jdz($n){

Return $n<0? -$n:$n;

}

//求两个数的绝对值的和

Function sum_jdz($a,$b,$func){

//利用外部的$func函数(回调函数)来实现$a,和$b 的绝对值求和

Return $func($a)+$func($b);

}

Echo sum_jdz(-1,-2.’jdz’);

$function 是一个函数的名字,该函数能够计算绝对值,浏览器刷新之后结果为3,如下:

image.png    

如何理解呢?$function 是一个变量,保存的值是绝对值,再加上一个“()”就是一个函数,系统就会去寻找这个绝对值的函数,如果有,就调用它,把值赋予它,系统就拿到了对应的绝对值,那么 sum 在这个里面就叫做回调函数,回调函数就是在这个函数里面去调用所给出的函数。


四、可变函数使用流程分析

函数写出来之后,给它赋值,$a=-1,$b=-1,然后$func=’jdz’,赋值完毕,接下来,可以看到$func($a)+$func($b),这时的$func 是绝对值的意思,绝对值加上绝对值,此时要判断一下绝对值这个函数是否存在,存在的话就调用一下上诉的函数,拿到它的绝对值,就计算结果,如果不存在,就抛掉。

求证一下,在上诉代码最后一行的加上一个 d:

Function jdz($n){

Return $n<0? -$n:$n;

}

Function sum_jdz($a,$b,$func){

Return $func($a)+$func($b);

}

Echo sum_jdz(-1,-2.’jdzd’);

运行一下,就会出现错误:

image.png

传的时候要传正确,要传一个函数名存在的地址,$var=’一个函数的名字’


五、可变函数小结

1.可变函数就是利用变量+()来寻找匹配的函数名当做函数访问

2.可变函数执行逻辑

变量取得值(字符串);变量+():系统自动理解为函数;系统寻找变量值对应的函数名;调用函数访问。

相关文章
|
8月前
|
存储 C语言
C语言向函数传递一维数组的技术详解
C语言向函数传递一维数组的技术详解
245 0
|
8月前
|
编译器 程序员 C语言
【C语言】变长数组,二分查找和数组之间自动替换的实现
【C语言】变长数组,二分查找和数组之间自动替换的实现
|
8月前
|
存储 C语言
C语言中变量的使用和数据类型的交换
C语言中变量的使用和数据类型的交换
49 0
|
存储 编译器 程序员
「自定义类型」C语言中的构造数据类型如结构,联合,枚举
🐰结构 🌸数据类型的定义 🌸关键字struct 与 class 的困惑 🌸使用struct 🐰位域(位段) 🐰成员对齐 🌸结构内存大小的计算 🐰联合(Union) 🌸联合内存大小的计算 🐰枚举(enum) 🌸枚举类型的大小
|
存储 C语言
C语言基础——(6)数组、变长数组、多维数组
数组 之前在说数据类型的时候就提到了数组,这里重点细说一下。数组名称不可以代表存储区,数组名称可以代表数组里第一个存储区的地址,也可以这么理解:数组的名称是一个指向数组第一个存储区的指针。
138 0
C语言基础——(6)数组、变长数组、多维数组
|
存储 C语言
C语言程序入门——初识一维、二维数组 与 函数参数定义概念1.1.3(定义、初始化、引用、类型)
类型名 数组名 [数组长度];例如: int a [10] 代表整型数组,数组变量名称为“a”,一共有10个整型元素。数组是具有相同类型数据的集合,其中的数据按照一定的顺序排列存放引用数组元素要指定其下标,通俗点就是:说明要第几个数字int main(){return 0;}例如下标为3,即元素a[3]数值为2注:数组计数取值范围是【0,数组长度-1】,而不是从1开始。即上方最后一位只有a[9],而不是a[10]二维数组是最常见的多维数组,主要表示二维表和矩阵。......
|
C语言 索引
数组的知识(可变与不可变)
数组的知识(可变与不可变)
476 0
数组的知识(可变与不可变)
C++ 手把手教你实现可变长的数组
C++ 手把手教你实现可变长的数组
C++ 手把手教你实现可变长的数组
|
存储 C语言
[C语言]初始数据类型
数据类型其实就是: 声明不同类型的变量或者函数的一个广泛的系统。 变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。 计算机是通过二进制(0、1)进行数据存储的,例如:二进制数据
125 0
[C语言]初始数据类型
|
开发者 索引
可变对象|学习笔记
快速学习 可变对象
109 0
可变对象|学习笔记

热门文章

最新文章