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();
}