background image

深入

php 函数与变量作用域的详解

本文介绍下,有关

php 函数与变量作用域的相关内容,有需要的朋友,参考下吧。

1、函数体、函数作用域、超全局变量

函数的返回值,函数体内的

 return 语句。

1、返回值,2、终止执行(终止的函数的执行)
只要出

return 就不会出现执行后面的脚本。

除非在分支结构中的

return。

一个函数只能有一个返回值

,但是可以有多个 return 语句。返回值也存在,值传递和引用

传递。默认是值传递。可以使用引用传递:

1,在定义函数时,告知函数需要返回一个引用。

代码示例

:

function &func(){

   return "";
}

在调用时,在函数前增加引用符号。

代码示例

:

$return = &func();
PHP 的作用域只有两种

   1  

, 函数外,全局作用域。

   2  

, 函数内,局部作用域。

法则:作用域不重叠。(全局不能访问局部,局部不能访问全局)

但是

js 是可重叠的。

特殊的:预定义变量(

9 大超全局数组变量)--注意是数组变量。

超全局:超级全局:既可以在全局使用,也可以在局部使用。所有的作用域都生效。

代码示例

:

$_GET['v1'] = "123";

echo $_GET['v1']
$GLOBALS 超级全局变量,是专门保存超全局变量的,注意没有下划线。

修改全局变量,会影响

GLOBALS 内元素的值;

原因:使用的一个数据空间。

相当于

:

代码示例

:

$GLOBALS[‘v8’] = &$v8;
create_function --  创建函数的另一方式

代码示例

:

  $func = create_function('$p',“echo $p);
var_dump($func); 返回一个函数名。

次函数创建出来的函数名

 为 lambda

 

风格。而且在函数名前有一个 不可见字符。

Ascii 为 0 的

不可见字符。
也可以调用。

 $result = ”\x0“."lamba8"(20); 注意要知道函数名才可调用。

最常用的地方出现在回调函数内。

因此

 create_function 所创建的函数,与普通函没有区别(存在函数的三个部分);