下图代码直接报错,是为什么呢?
代码:
<?php
$x=5; // 全局变量
function Test()
{
// global $x;
$y=10; // 局部变量
echo "<p>测试函数内变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为1111111111111111111111111111: $y";
return $y;
}
$result = Test();
echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br/>";
echo "变量 y 为: $result";
在以上实例中 Test() 函数定义了 $x 和 $y 变量。 $x 变量在函数外声明,所以它是全局变量 , $y 变量在函数内声明所以它是局部变量。
·当我们在函数里面,想要直接获取函数外面的全局变量,是拿不到的,而且会报错;但是在函数外面直接拿$x可以直接获取成功,同理在函数外面想直接拿到函数里面的$y,也是不能直接获取的,这时就有好几种方法来获取。
想要在函数内拿到全局变量,方法一:使用global
global $x;
成功输出$x的值
方法二:$GLOBALS,PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。所以可以直接访问到变量,如下方代码
代码:
$globalVar = '你好你好你好~!!';
function myFunction() {
$GLOBALS['globalVar'] = 'Hello, World!';
}
myFunction();
echo $globalVar; // 输出 'Hello, World!'
本来全局变量为:你好你好你好,通过修改后变成:Hello, World!
所以需要获取变量直接使用$GLOBALS方法
方法三:通过实参和形参来互相修改
代码:
function Test1(&$a,$b){ //&符号会使局部变量和全局变量一起修改
$a = "我是你的神";
$c = $b . $a;
}
$qq = '欢迎来到';
$oo = '我的世界';
Test1($oo,$qq);
echo $oo;
echo $qq;
·因为加了&符号,所以最后输出的不是:我的世界,欢迎来到,而是下图
输出结果:
·如果你还是有点迷,那就举个最简单的例子
代码:
function myTest($x) //第二步:获取参数:5
{
echo $x; //第三步:echo是输出语句,输出5
}
myTest(5); //第一步:将5传给myTest里面的$x
第一步:先调用函数,在括号里面输入数据如:5,
第二步:这个5找到了函数myTest,并且找到了对应的$x,现在的$x可以看成
$x = 5;
第三步:函数里面执行echo $x;
第四步:myTest(5)执行