问题描述
|
我正在使用便携式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;
上面的三行将彼此给出完全相同的结果。