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

时间:2011-05-25 12:41:27

标签: php

我正在使用便携式WAMP套装“USB网络服务器”。如果我尝试直接回显某个变量,例如

,则会出错
<?php
echo $abc;  
?>

我得到的错误是:“注意:未定义的变量:abc”

这样可以正常工作:

<?php
$abc = "foo";
echo $abc;  
?>

是否可以修复此错误? 我一定会使用便携式WAMP包,因为我没有管理员权限,所以我无法安装任何其他包。

9 个答案:

答案 0 :(得分:2)

嗯,除了为什么我不知道为什么你想要回应未定义的东西,你没有收到错误,你会收到通知。

如果你想这样做,你必须忽略生产环境中的通知,就像你可以read here这样工作:

// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);

答案 1 :(得分:1)

如果没有定义,应该打印什么?

您可以在尝试打印之前检查它是否已定义

if(isset($abc))
{
    echo $abc;
}

您还可以通过在行前面添加@符号来抑制错误

@echo $abc;

但不推荐这样做,可能会慢一些。

答案 2 :(得分:1)

删除通知和警告 写

页面顶部的

error_reporting(E_ALL ^ E_NOTICE);

答案 3 :(得分:0)

确实没有定义变量。你到底想要发生什么?

如果您不想看到错误,请定义它。

<?php
$abc = '';
echo $abc;
?>

答案 4 :(得分:0)

嗯,答案是修复代码,这样就不会访问尚未定义的变量。如果您需要阻止它打印错误这不是正确的解决方案(*),那么您可以在错误报告中关闭通知:

error_reporting(E_ALL ^ E_NOTICE);

正确的解决方案是修复代码。

答案 5 :(得分:0)

在回复之前检查它是否存在

if(isset($ abc)) {    echo $ abc }

答案 6 :(得分:0)

你当然也可以检查变量是否存在。

<?php if (isset($myvar)) echo $myvar; ?>

铜 罗马

答案 7 :(得分:0)

您还可以取消对echo命令的警告。一般禁用警告是危险的。

<?php
    @echo $abc;
?>

答案 8 :(得分:0)

您在编程中学到的最早原则之一是声明您的变量。因此,修复此错误声明您的变量

但是,在多种情况下可能会发生您不知道变量是否已定义但仍想避免错误的情况。

在这些情况下,首先检查它的存在:

// print $abc if set, or print an empty string/nothing
echo isset($abc) ? $abc : '';
isset($abc) && print $abc;
if (isset($abc)) echo $abc;

上面三行将给出完全相同的结果。