这个东西很难理解, 但很重要, 我觉得非常容易出错
PHP 中的变量按照作用域分为有两种, 一种是 global, 一种是 local
函数内部声明的变量就叫 local 型变量, 只能在函数内部被访问到一句话, local 型变量只能在函数内部定义以及引用
函数外部声明的变量叫 global 型变量, 只能在函数的外部访问到 (除了 GLOBALS) 这种渣渣也能叫 global, 真是名不副实啊! 我记得以前学习过的语言不是这个样子的, 只要是 global, 函数外还是函数内都可以访问到的, 但 php 就是这么难搞
我们看一个 local 的例子
- <?php
- $name = hanmeimei;
- function getName(){
- echo $name;
- }
- getName();
- ?>
运行结果显示 $name 这个变量没有被定义是因为 php 解析器没有在 getName 函数内部找到 $name 这个变量的定义为啥不去外面找去啊, 如果没有特别的声明, 函数内部引用到的变量只会在函数内部去找它的定义
那怎么才能访问到外面的 name 呢?
我们看一个 global 的例子
- <?php
- $name = "hanmeimei";
- function getName(){
- global $name;
- echo $name;
- }
- getName();
- ?>
这回就没有错误提示了, 为什么呢? 是因为在 getName 函数内部有一句 global $name, 它的意思是告诉 PHP 解析器 $name 这个变量的定义你得在函数外面找, 然后就找到了 $name 的值是 hanmeimei 变量前面的 global 使得 $name 这个 global 型变量的作用范围扩大到了 getName 函数内部
前面有句话: 函数外部声明的变量叫 global 型变量, 只能在函数的外部访问到, 这是什么意思?
- <?php
- $name = hanmeimei;
- echo $name;
- ?>
来源: http://www.bubuko.com/infodetail-2499910.html