PHP变量赢得';在定义之前不要打印它

PHP变量赢得';在定义之前不要打印它,php,Php,我正在使用一个便携式WAMP包“USB web服务器”。例如,如果我试图直接回显某个变量,则会出现错误 <?php echo $abc; ?> 我得到的错误是:“注意:未定义变量:abc” 这很好: <?php $abc = "foo"; echo $abc; ?> 是否可以修复此错误? 我必须使用portable WAMP软件包,因为我没有管理员权限,所以我无法安装任何其他软件包。好吧,除了我不知道为什么您要回显未定义的内容之外,您不会收到错误,您会

我正在使用一个便携式WAMP包“USB web服务器”。例如,如果我试图直接回显某个变量,则会出现错误

<?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
,如果打印出来,它将成为
“”
空字符串。该通知只是调试目的的副产品,因为通常这不是您想要的。那么,你为什么想要它?看看纳恩的答案。但是,你在那里写的我