在PHP中,从未设置的变量或数组元素与值为的元素不同
null;尝试访问此类未 设置的 值是运行时错误。
这就是您遇到的问题:数组
$_POST的键上没有任何元素
"username",因此解释器会在程序进行无效测试之前中止您的程序。
幸运的是,您可以测试变量或数组元素的存在,而无需实际尝试访问它。这就是特殊运算符的
isset作用:
if (isset($_POST["username"])){ $user = $_POST["username"]; echo $user; echo " is your username";} else { $user = null; echo "no username supplied";}看起来,当PHP尝试获取
$_POST["username"]要作为函数参数传递的value时,它将以与代码完全相同的方式爆炸
isset()。但是,
isset()它根本不是一个函数,而是在评估阶段之前就可以识别的特殊语法,因此PHP解释器将检查该值的存在而无需实际尝试检索它。
还值得一提的是,随着运行时错误的发生,缺少的数组元素被认为是次要的(分配了
E_NOTICE级别)。如果更改
error_reporting级别以便忽略通知,则原始代码将按编写的方式实际工作,而尝试的数组访问将返回
null。但这被认为是不好的做法,尤其是对于生产代码。
旁注:PHP进行字符串插值,因此块中的
echo语句
if可以合并为一个:
echo "$user is your username";



