我是个初学者,我在家里使用phpstorm编写以下这段代码运行是不报错的
代码如下:
<?php
$x=5; // 全局变量
function myTest()
{
$y=10; // 局部变量
echo "<p>测试函数内变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
}
myTest();
echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "
";
echo "变量 y 为: $y";
?>
但是上班的时候,浏览器就报这个提示,如下:
测试函数内变量:
Notice: Undefined variable: x in F:WEBDEVELOPIndex.php on line 8
变量 x 为:
变量 y 为: 10
测试函数外变量:
变量 x 为: 5
Notice: Undefined variable: y in F:WEBDEVELOPIndex.php on line 18
变量 y 为:
问题:
我在看PHP教程中说$就可以定义变量了,但是却提示x变量没有被申明,请大神帮我解释一下可以吗?谢谢
我猜测家里不报错而公司报错,是因为php报错级别设置不同导致的,你可以在代码的开头添加如下代码试试:
error_reporting(E_ALL ^ E_NOTICE);// 除了E_NOTICE之外,报告所有的错误
这个是动态设置的,你也可以在php.ini中设置,具体方法百度一下;
函数里面的变量对外是封闭的,外边设置了里面不能使用,这和php版本无关,楼上详细说明了。
PHP 全局变量这里有详解
外部定义全局变量,函数内部使用的时候,需要使用global关键字,这是语法规定,或者使用$GLOBAL数组
要声明他是全局变量才行,global $x;这样才行
可以搜索关键字"作用域",每种语言的变量作用域都不相同,可以对比来理解。
你看看你测试的 PHP 版本和工作环境的 PHP 版本。新的版本我不清楚,5.3、5.6 中全局变量的作用域不包括函数内部,所以函数识别不了 $x 很正常,因为在函数的作用域中没有这个变量