跟随我在oracle学习php(30)

变量的作用域

通常说作用域,有2个:

 

局部作用域:只能在所定义的函数范围内使用。

全局作用域:在函数的“外部”范围使用。

——php中,局部和全局作用域是不重叠的

——js中,全局作用域是包括局部作用域的

 

但还有两个:

超全局:就是在函数的内部和外部都可以使用。

超全局变量只有系统内部预定义的那几个,我们不能再程序中创建超全局变量。

静态局部作用域:其实也是局部,但多一个特征:数据能够在函数退出后仍然保持不丢失。

 

 

 

 

 

局部访问全局变量的特定语法

1,在局部范围内,使用global关键字对全局变量进行一次“声明”,则就可以使用了:

语法:global  $变量名;

举例:

 

 

说明:

1,实际上,函数中的global 语句,其实是创建了一个跟外部变量同名的局部变量,并通过“引用”的方式指向了外部变量的数据区

 

 

示例:

 

 

2,在函数中(局部范围),使用$GLOBALS超全局数组来引用(使用)全局变量:

$GLOBALS超全局数组的作用是用于存储所有全局变量的数据:变量名为下标,变量值为对应元素值。

 

 

但通过 $GLOBALS操作全局变量,是直接操作(而不是引用操作),即如果unset该对应元素,则全局变量对应变量也被unset

 

 

3,实际上,我们还可以在函数内部直接使用$GLOBALS数组,添加元素的方式来创建全局变量,自然也就类似局部使用全局:

 

 

全局访问局部变量的特定语句

通过引用传递的方式向形参传递一个引用实参变量

$v1 = 10;

function  f1( &$p1, $p2){ ...... } //$p1是函数的形参,也即就是函数的内部(局部)变量

$v2 = f1( $v1, 10); //此时我们认为$v1就可以使用函数中$p1的值。

使用函数的引用返回形式:见前面引用传递的方式返回数据

函数中使用global关键字来首次引用一个全局变量,则函数结束后在全局范围就可以使用该变量了

 

 

结果:

 

有关函数的系统函数:

function_exists():判断某个函数是否被定义过,返回布尔值

if(  function_exists(“ func1 “)  == false ){

function  func1(){。。。。。。}//定义函数

}

func_get_arg(n):获得一个函数的第n个实参值(n0开始)

func_get_args():获得一个函数的所有实参,结果是一个数组

func_num_args():获得一个函数的所有实参的个数。

 

有关函数的编程思想

 

递归思想(递归函数)

递归思想的一个基本形式是:在一个函数中,有至少一条语句,又会去调用该函数自身。

但是,从代码角度来说,如果单纯是函数内部调用函数本,则会出现“出不来”的现象。

则我们就必须再来解决下一个问题:

怎么终止(停止)这种调用——找到递归函数的出口。

 

 

 

案例分析:

写一个递归函数,该函数可以计算一个正整数的阶乘:

数学基础:

A1的阶乘是1

B: 大于1的数的阶乘,是这个数减1的数的阶乘,乘以该数的结果。

比如:要求6的阶乘:

则定义一个函数jiecheng(){.....};该函数可以计算n的阶乘

 

 

 

递归思想的总结:

为了解决一个“大”问题,根据现实逻辑,该问题可以通过比它小一级的同类问题的答案而“轻松得到”。小一级的问题又可以通过更小一级的问题而轻松得到,依次类推——直到“最小问题”,通常就是一个已知数(答案)。

 

递归思想的图示

 

 

 

转载于:https://www.cnblogs.com/RighTgraM/p/10892896.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值