PHP变量在定义它之前不会打印

问题描述

| 我正在使用便携式WAMP软件包“ USB Web服务器”。例如,如果我尝试直接回显某些变量,则会出现错误
<?PHP
echo $abc;  
?>
我得到的错误是:\“注意:未定义的变量:abc \” 这将正常工作:
<?PHP
$abc = \"foo\";
echo $abc;  
?>
是否可以解决错误? 我必须使用便携式WAMP软件包,因为我没有管理员特权,因此无法安装任何其他软件包。     

解决方法

嗯,除了为什么我不知道为什么要回显未定义的内容之外,您没有收到错误,而是得到了通知。 如果要执行此操作,则必须忽略生产环境中的通知,就像您可以在这里阅读以下内容一样:
// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);
    ,如果未定义,应打印什么? 您可以在尝试打印之前检查它是否已定义
if(isset($abc))
{
    echo $abc;
}
您还可以通过在行前面添加@符号来抑制错误
@echo $abc;
但这是不建议的,可能会更慢。     ,删除通知和警告 写 页面顶部的
error_reporting(E_ALL ^ E_NOTICE);
    ,确实没有定义变量。您到底想发生什么? 如果您不想看到该错误,请对其进行定义。
<?php
$abc = \'\';
echo $abc;
?>
    ,好吧,答案是修复代码,以便您不访问未定义的变量。如果需要防止它打印不是正确解决方案(*)的错误,则可以在错误报告中关闭通知:
error_reporting(E_ALL ^ E_NOTICE);
正确的解决方案是修复代码。     ,在回显它之前检查它是否存在 if(isset($ abc)) {    回声$ abc }     ,您当然也可以只检查变量是否存在。
<?php if (isset($myvar)) echo $myvar; ?>
cu 罗曼     ,您还可以在echo命令中禁止显示警告。通常禁用警告很危险。
<?php
    @echo $abc;
?>
    ,在编程中学习的最早的原理之一就是声明变量。因此,要解决此错误,请声明您的变量。 但是,在多种情况下,您可能不知道变量是否已定义,但仍然想避免该错误,这可能会发生。 在这些情况下,请首先检查其存在:
// print $abc if set,or print an empty string/nothing
echo isset($abc) ? $abc : \'\';
isset($abc) && print $abc;
if (isset($abc)) echo $abc;
上面的三行将彼此给出完全相同的结果。