function fn() { echo "inside the function, $var = ".$var."<br>"; $var = "content 2"; echo "inside the function, $var = ".$var."<br>"; } $var = "content 1"; fn(); echo "outside the function, $var = ".$var."<br>"; echo "<br><br>";
输出:
inside the function, $var = inside the function, $var = content 2 outside the function, $var = content 1
函数在被调用之前是不会执行的,所以第一条执行的语句$var = "content",该语句创建了一个名为$var的变量,它具有全局作用域且值为"content 1",下一条执行的语句是调用函数fn(),函数内部的代码按顺序执行,函数第一行引用了一个名为$var的变量,当这行被执行时,就不能看到前面创建的变量$var了,所以它创建了一个具有函数作用域的新变量并将它显示出来,这就是输出的第一行。
函数内的下一行代码将变量$var的内容设为"content 2"。因为是在函数内部,所以这一行改变了局部$var值,而不是那个全局变量,输出的第二行证实了这个改变。