Home > php教程 > php手册 > PHP基础笔记函数global变量

PHP基础笔记函数global变量

WBOY
Release: 2016-05-25 16:49:01
Original
1177 people have browsed it

global在php是全局变量了,这个global只是页面全局变量,如函数之外的变量我们可以在函数中直接使用global申明就可以获取变量的值了。

实例代码如下:

<?php
$a = 12;
function fn() {
    global $a; //使用外层$a变量,不使用这个方法$a为局部变量
    $a+= 12;
}
echo &#39;$a=&#39; . $a //输出结果
?>
Copy after login

输出的结果:$a=24

总结:在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用,代码如下:

<?php
global $a;
$a = 123;
function f() {
    echo $a; //错误,
    
}
//再看看下面一例
function f() {
    global $a;
    $a = 123;
}
f();
echo $a; //正确,可以使用
?>
Copy after login

上面的实例只是基本的global全局变量知识,下面我们看看复杂点的,代码如下:

//A.php 文件

<?php
function Test_Global() {
    include &#39;B.php&#39;;
    Test();
}
$a = 0;
Test_Global();
echo $a;
?>
Copy after login

//B.php 文件

<?php
function Test() {
    global $a; //申明函数体Sum内使用的$a变量为global全局变量
    $a = 1;
}
?>
Copy after login

为什么输出的却是0?!!

在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内(包括include 和 require 导入的文件内的变量)!

解释:A.php文件的内Test_Global是定义好的第三方函数,该函数用include导入了B.php文件内的$a的global全局变量,所以$a被限制在Test_Global局部函数范围内,所以B.php文件内的$a的作用范围都在Test_Global内,而不是作用了整个A.php内….

解决方案:

1.冲出局部函数,代码如下:

//A.php 文件 
<?php
function Test_Global() {
    Test();
}
include &#39;B.php&#39;; //将include 从局部Test_Global函数中移出
$a = 0;
Test_Global();
echo $a;
?>
Copy after login

//B.php 文件

<?php
function Test() {
    global $a;
    $a = 1;
}
?>
Copy after login

global问题解析:

question:我在config.inc.php中定义了一些变量($a),在别的文件中函数外部 include("config.inc.php"),函数内部需要使用这些变量$a,如果没有声明的话,echo $a是打印不出来任何东西的。因此声明global $a,但是有很多函数和很多变量,总不能不断重复的这样声明吧?有什么好的解决办法,请指点。

answer1:先在config.inc.php里定义常量:define(常量名,常量值)

再在其他需要用到的地方require 'config.inc.php',

然后就能在这个文件里直接使用这个常量了。

answer2:我也有个办法,就是定义数组,如$x[a],$x,那样就只要声明global $x一个了。

answer3:我试了你的这个方法,不行啊。

answer4:改你的php.ini文件。


本文地址:

转载随意,但请附上文章地址:-)

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template