PHP Global定义全局变量使用说明

很不习惯PHP中的变量作用域,PHP中函数变量和全局是完全隔绝的,也就是无法相互访问。
比如下面这样:

copytext

 代码如下 复制代码

$test = 123;

 abc(); //这里什么都不输出,因为访问不到$test变量
function abc(){
    echo($test);
}$test = 123;

abc(); //这里什么都不输出,因为访问不到$test变量
function abc(){
    echo($test);

}如果,你想在函数内部访问外部变量,你需要这样:

copytext

 代码如下 复制代码

$test = 123;

 abc(); //输出123
function abc(){
    global $test;
    echo($test);
}$test = 123;

abc(); //输出123
function abc(){
    global $test;
    echo($test);
}

但如果我们在函数中定义全局变量呢,像下面这样:

copytext

 代码如下 复制代码
function abc(){
    global $test;
    $test = 123;
}
abc();
echo($test); //输出123function abc(){
 global $test;
 $test = 123;
}
abc();
echo($test);

 //输出123通过这种方式,我们可以在外部访问到函数内部定义的变量

在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内(包括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()
{&nbsp;&nbsp;
    Test();&nbsp;&nbsp;
}&nbsp;&nbsp;
include 'B.php';&nbsp;&nbsp; //将include 从局部Test_Global函数中移出
$a = 0 ;
Test_Global();
echo $a;
?>&nbsp;

//B.php 文件

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

2.优秀的访问器

 代码如下 复制代码

//A.php 文件
<?php
include 'B.php';&nbsp;
$a =0;
Set_Global($a);
echo $a;
?>&nbsp;

//B.php 文件

<?php
function Set_Global(&$var)
{
    $var=1;
}
?>

时间: 2024-11-29 16:26:17

PHP Global定义全局变量使用说明的相关文章

PHP Global定义全局变量使用说明_php技巧

很不习惯PHP中的变量作用域,PHP中函数变量和全局是完全隔绝的,也就是无法相互访问.比如下面这样: 复制代码 代码如下: $test = 123; abc(); //这里什么都不输出,因为访问不到$test变量function abc(){    echo($test);}$test = 123;abc(); //这里什么都不输出,因为访问不到$test变量function abc(){    echo($test);} 如果,你想在函数内部访问外部变量,你需要这样: 复制代码 代码如下: $

ORACLE 中定义全局变量,在其他各个PROCEDURE中使用

问题描述 ORACLE 中定义全局变量,在其他各个PROCEDURE中使用 如何在ORACLE中定义一个全局性的常量类,在其他的各个存储过程中调用使用: 类似与JAVA中得常量类这样. 我目前想到两种方案, 1,定义一个表,在这个表中录入各种变量,如何在存储过程中调用(感觉存储过程中,还是硬编码了一些东西) 2,写一个存储过程包,里面都定义function,一个function返回一个变量值(感觉一个变量写一个function太麻烦) 请问各路大神,有没有那种类似JAVA 或者C中,定义一个常量

php 定义全局变量,静态变量,局部变量定义实例

 //$globals 数组    function testfunction() {   echo $globals["php_self"];  }  testfunction();     // 本程序使用全局定义  function testfunction() {   global $s;   echo $s;  }  $s='this is www.111cn.net';  testfunction();    // 静态变量的例子  function testfunctio

PHP中超全局变量$GLOBALS和global的区别

本篇文章分享一下关于PHP中的超全局变量$GLOBALS和global的区别. 一.超全局变量$GLOBALS   PHP超全局变量有很多,如下的都属于超全局变量(Superglobal):   $GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST,$_ENV.   官方说明: $GLOBALS - 引用全局作用域中可用的全部变量. 一个包含了全部变量的全局组合数组.变量的名字就是数组的键. 即出现过的全局变量,就

《MATLAB神经网络超级学习手册》——2.4 M文件

2.4 M文件 MATLAB神经网络超级学习手册 M文件有两种形式:脚本文件(Script File)和函数文件(Function File).脚本文件通常用于执行一系列简单的MATLAB命令,运行时只需输入文件名字,MATLAB就会自动按顺序执行文件中的命令. 函数文件和脚本文件不同,它可以接受参数,也可以返回参数,在一般情况下,用户不能靠单独输入其文件名来运行函数文件,而必须由其他语句来调用,MATLAB的大多数应用程序都以函数文件的形式给出. 2.4.1 M文件概述 MATLAB提供了极其

matlab主要命令大全

 1.运算符:  +:加,  -:减,  *:乘,  /: 除, \:左除  ^:  幂,':复数的共轭转置, ():制定运算顺序.  2.常用函数表:  sin( )   正弦(变量为弧度)     Cot( )   余切(变量为弧度)  sind( )  正弦(变量为度数)    Cotd( )  余切(变量为度数)  asin( )  反正弦(返回弧度)       acot( )  反余切(返回弧度)     Asind( ) 反正弦(返回度数)     acotd( ) 反余切(返回度

Python 关键字

简述 关键字是预先保留的标识符,每个关键字都有特殊的含义.编程语言众多,但每种语言都有相应的关键字,Python 也不例外,它自带了一个 keyword 模块,用于检测关键字. 简述 关键字列表 关键字判断 关键字含义 版权所有:一去丶二三里,转载请注明出处:http://blog.csdn.net/liang19890820 关键字列表 进入 Python 交互模式,获取关键字列表: >>> import keyword >>> keyword.kwlist ['Fa

JavaScript必知必会(五) eval 的使用_javascript技巧

eval eval(parse) parse :里面跟参数字符串,我们知道执行javascript 会编译执行, 改变全局变量的值: var x = ; //定义的全局变量 alert(x);// var g = eval("x="); //eval 会根据当前上下文解析x alert(x);// 在全局作用域引用eval,改变全局作用域的值,不改变局部作用域的值 var g = eval; //全局引用eval var x = "global";//定义全局变量

C#中调用Matlab人工神经网络算法实现手写数字识别

手写数字识别实现 设计技术参数:通过由数字构成的图像,自动实现几个不同数字的识别,设计识别方法,有较高的识别率 关键字:二值化  投影  矩阵  目标定位  Matlab                                                               手写数字图像识别简介: 手写阿拉伯数字识别是图像内容识别中较为简单的一个应用领域,原因有被识别的模式数较少(只有0到9,10个阿拉伯数字).阿拉伯数字笔画少并且简单等.手写阿拉伯数字的识别采用的方法相对于