这是我的第一篇博客,也是第一次为自己在做的事情写点东西。鼓掌。。。。。。
了解php作用域是通过手册,当时以为懂了,回头再想其实中间细微的地方并没搞清楚。比如,把C#的变量作用域等同于php变量的作用域就是不恰当的,C#跟php在全局变量跟函数内部变量之间的关系是不一样的.
php变量作用域理解如下:
1.函数外部定义变量为全局变量,在文件中可用(注:函数内另有用法)。
2.函数内部的变量为局部变量,作用域始于函数开始“{”到函数结束“}”。
3.函数参数变量的作用域与函数内部变量作用域相同(注:外部调用传参为值引用,变地址引用请用“&”(地址符))。
4.函数外部的变量在函数内部是不可见的,换言之:函数内外同名的变量其实是两个不同的变量。(改变这种情况可以用global(全局变量修饰符))。
5.require或include引入的文件的作用域取决于所处文件中的未知。
example:
<?php
$number=2;
$number2=3;
function myfunction($value)
{
$number=$value;
echo 'inside number:'.$number; //输出1;
global $number2;//声明为global全局变量 即内外公用一个变量
$number2=$value;
}
myfunction(1)
echo '$value:'.$value;//未定义的变量;
echo 'outside number:'.$number;//输出为2
echo 'outside number2:'.$number //输出为1
?>