在函数以外声明的变量是全局变量,但是默认情况下不能在函数中访问全局变量。要允许函数访问一个全局变量,需要在函数中用关键字global在函数内部声明该变量。
所以,你第一段程序是正确的,第二段程序中,函数外的$x = 10;语句已经声明了一个具有全局作用域的变量,再global $x;这一句是多余的,而函数内部没有声明一个$x变量就对其进行++运算,实际上这时候$x等同于NULL.