doupoo 2020-01-11
作用域指的是作用范围,在php中,
函数内的有作用的范围就叫局部作用域,在里面定义的变量也就是局部变量,
在函数外有作用的范围就叫全局作用域,在全局作用域里定义的变量也就是全局变量
一:全局不能访问局部变量,局部不能访问全局变量
在php中,全局和局部之间是不能直接访问数据变量,全局变量就只能在全局中直接使用,局部变量就只能在局部作用域中使用
二:超全局变量
<?php if (isset($_GET["num"])) { function getnum(){ return $_GET["num"]; } echo getnum(); } ?> <form action="" method="get"> 数字:<input type="text" name="num"> <input type="submit" value="提交"> </form>
在php中,超全局变量也就是能在全局中用,和局部中都能使用,像预定义变量其实都是超全局变量,如上代码,$_GET这个预定义变量,不管是在函数外(全局作用域)还是在函数内(局部作用域)都起作用,这里有一个特殊的超全局变量$GLOBALS,她是一个保存着全局和局部所有变量的数组,通过他能解决不同作用域不能访问的问题,还有一种是global关键词,设置了global关键词通过引用关系 把局部引进全局或者把全局引进局部
if (isset($_GET["num1"])) { $res = $_GET["num1"]; function demo(){ // echo $num1;Undefined variable: num1 echo ($GLOBALS[‘res‘]) ;//通过$GLOBALS[‘变量名‘]访问 } demo(); }