php的局部变量是在函数(单单函数)的花括号范围内声明的变量,如果要在函数内使用全局变量必须要以加global关键字的方式声明一遍。由于之前做C++开发没有在函数里加global再声明一遍全局变量的习惯,所以直接就使用了与全局变量同名的变量 ,因为php使用变量之前不需要另外声明,所以也不会报错,结果我在函数里用的实际是一个新的与全局变量同名的变量,值为空,纠结了半天才发现这么回事。
另外在if语句和循环语句不是一个域,也就是说如果他们写在一个函数里,不加global使用的变量属于这个函数,如果要使用全局变量得加global,与在函数里使用全局变量一样。在它们之内定义的变量的作用域在这个函数里;如果它们不是写在函数里,那么他们不加global使用的变量就是全局的,在它们之内定义的变量是全局的。