首页 后端开发 php教程 PHP的一个全局变量如其引用了一个局部变量的地址

PHP的一个全局变量如其引用了一个局部变量的地址

Jun 13, 2016 am 10:46 AM
abc echo global quot

PHP的一个全局变量如果引用了一个局部变量的地址

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->    $b = "dasdf";    function abc(){        $a = "abc";        global $b;        $b = &amp;$a;        echo $b."inner;";    }    abc();    echo $b.";";
登录后复制


在函数内部输出b的时候,是abc,但是离开函数后,输出b,又恢复成dasdf的初始值,这是怎么回事呢?按理说,引用了一个局部变量的地址,这个局部变量销毁后,b的值应该是空啊。

------解决方案--------------------
在手册:
http://www.php.net/manual/zh/language.references.whatdo.php#example-251
如果在一个函数内部给一个声明为 global 的变量赋于一个引用,该引用只在函数内部可见。可以通过使用 $GLOBALS 数组避免这一点。
原因如下:
把 global $var; 当成是 $var =& $GLOBALS['var']; 的简写。从而将其它引用赋给 $var 只改变了本地变量的引用。
------解决方案--------------------
$b = "dasdf";
function abc(){
$a = "abc";
global $b; //这是对 $GLOBALS['b'] 的引用
$b = &$a;
$GLOBALS['bb'] = & $a;
echo $b."inner;";
}
abc(); //abcinner;
echo $b.";"; //dasdf;
echo $bb; //abc

------解决方案--------------------
记住php的两个概念,所有变量都是指针,所有作用域不同的变量是不同的变量,即可
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

五个精选的Go语言开源项目,带你探索技术世界 五个精选的Go语言开源项目,带你探索技术世界 Jan 30, 2024 am 09:08 AM

五个精选的Go语言开源项目,带你探索技术世界

Go语言开发必备:5个热门框架推荐 Go语言开发必备:5个热门框架推荐 Mar 24, 2024 pm 01:15 PM

Go语言开发必备:5个热门框架推荐

使用Golang的Web框架Echo框架实现分布式任务调度 使用Golang的Web框架Echo框架实现分布式任务调度 Jun 24, 2023 am 11:49 AM

使用Golang的Web框架Echo框架实现分布式任务调度

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决

Laravel开发:如何使用Laravel Echo和Pusher实现WebSockets通信? Laravel开发:如何使用Laravel Echo和Pusher实现WebSockets通信? Jun 13, 2023 pm 05:01 PM

Laravel开发:如何使用Laravel Echo和Pusher实现WebSockets通信?

PHP中echo关键字的作用和使用方法详解 PHP中echo关键字的作用和使用方法详解 Jun 28, 2023 pm 08:12 PM

PHP中echo关键字的作用和使用方法详解

探索Go语言框架:5个不容错过的选择! 探索Go语言框架:5个不容错过的选择! Feb 19, 2024 pm 02:29 PM

探索Go语言框架:5个不容错过的选择!

探索一下,Go语言常用的框架有哪些? 探索一下,Go语言常用的框架有哪些? Feb 18, 2024 pm 10:53 PM

探索一下,Go语言常用的框架有哪些?

See all articles