PHP变量赢得';在定义之前不要打印它
我正在使用一个便携式WAMP包“USB web服务器”。例如,如果我试图直接回显某个变量,则会出现错误PHP变量赢得';在定义之前不要打印它,php,Php,我正在使用一个便携式WAMP包“USB web服务器”。例如,如果我试图直接回显某个变量,则会出现错误 <?php echo $abc; ?> 我得到的错误是:“注意:未定义变量:abc” 这很好: <?php $abc = "foo"; echo $abc; ?> 是否可以修复此错误? 我必须使用portable WAMP软件包,因为我没有管理员权限,所以我无法安装任何其他软件包。好吧,除了我不知道为什么您要回显未定义的内容之外,您不会收到错误,您会
<?php
echo $abc;
?>
我得到的错误是:“注意:未定义变量:abc”
这很好:
<?php
$abc = "foo";
echo $abc;
?>
是否可以修复此错误?
我必须使用portable WAMP软件包,因为我没有管理员权限,所以我无法安装任何其他软件包。好吧,除了我不知道为什么您要回显未定义的内容之外,您不会收到错误,您会收到通知 如果您想这样做,您必须忽略生产环境中的通知,就像您可以这样工作:
// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);
好吧,除了为什么我不知道为什么你会想回应一些没有定义的东西,你不会得到一个错误,你会得到一个通知 如果您想这样做,您必须忽略生产环境中的通知,就像您可以这样工作:
// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);
这个变量确实没有定义。你到底希望发生什么 如果不想看到错误,请定义它
<?php
$abc = '';
echo $abc;
?>
变量确实没有定义。你到底希望发生什么 如果不想看到错误,请定义它
<?php
$abc = '';
echo $abc;
?>
如果没有定义,它应该打印什么 您可以在打印之前检查它是否已定义
if(isset($abc))
{
echo $abc;
}
您还可以通过在行前面附加@符号来抑制错误
@echo $abc;
但不建议这样做,而且速度可能较慢。如果没有定义,它应该打印什么 您可以在打印之前检查它是否已定义
if(isset($abc))
{
echo $abc;
}
您还可以通过在行前面附加@符号来抑制错误
@echo $abc;
但是这是不推荐的,而且速度可能较慢。好吧,答案是修复代码,这样您就不会访问尚未定义的变量。如果需要防止打印错误,而这不是正确的解决方案(*),则可以关闭错误报告中的通知:
error_reporting(E_ALL ^ E_NOTICE);
正确的解决方案是修复代码。答案是修复代码,这样您就不会访问尚未定义的变量。如果需要防止打印错误,而这不是正确的解决方案(*),则可以关闭错误报告中的通知:
error_reporting(E_ALL ^ E_NOTICE);
正确的解决方案是修复代码。删除通知和警告 写
错误报告(E\u所有^E\u通知)在页面顶部编码>以删除通知和警告
写
错误报告(E\u所有^E\u通知)代码>在页面顶部在回显之前检查它是否存在
如果(isset($abc))
{
echo$abc
}在回显之前检查它是否存在
如果(isset($abc))
{
echo$abc
}当然,您也可以检查变量是否存在
<?php if (isset($myvar)) echo $myvar; ?>
特写
当然,您也可以检查变量是否存在
<?php if (isset($myvar)) echo $myvar; ?>
特写
Roman您还可以取消显示echo命令上的警告。通常禁用警告是危险的
<?php
@echo $abc;
?>
您还可以取消显示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;
上面的三行将给出完全相同的结果。在编程中学习的最早原则之一是声明变量。因此,要修复此错误,声明变量
但是,在多种情况下可能会发生这样的情况:您不知道是否定义了变量,但仍然希望避免错误
在这些情况下,首先检查其是否存在:
// print $abc if set, or print an empty string/nothing
echo isset($abc) ? $abc : '';
isset($abc) && print $abc;
if (isset($abc)) echo $abc;
上面的三行将给出完全相同的结果。不清楚您想要什么。显然,您不能在定义变量之前回显它,因为它不存在。这不是错误,这是正常行为。那么你为什么要做echo$abc
?@Felix Kling,实际上我在另一台电脑上写了代码,如果我打印时没有定义变量,它不会发出任何通知,但现在我把文件复制到另一台电脑上,我收到了很多这样的信息。是否还有关闭通知的方法?只要您没有为变量赋值,它就包含NULL
,如果打印出来,它将成为“”
空字符串。该通知只是调试目的的副产品,因为通常这不是您想要的。那么,你为什么想要它?看看纳恩的答案。但同样,你在那里写的只是糟糕的代码。宁愿修复它,也不要忽略错误。在回显变量之前,请先定义变量或使用empty()
或isset()
测试其存在性。不清楚您想要什么。显然,您不能在定义变量之前回显它,因为它不存在。这不是错误,这是正常行为。那么你为什么要做echo$abc
?@Felix Kling,实际上我在另一台电脑上写了代码,如果我打印时没有定义变量,它不会发出任何通知,但现在我把文件复制到另一台电脑上,我收到了很多这样的信息。是否还有关闭通知的方法?只要您没有为变量赋值,它就包含NULL
,如果打印出来,它将成为“”
空字符串。该通知只是调试目的的副产品,因为通常这不是您想要的。那么,你为什么想要它?看看纳恩的答案。但是,你在那里写的我