我必须用PHP声明我的变量吗?
我通常设置所有变量,即使它们可能不会返回任何内容。但现在我想知道: 如果我回显一个空变量,会有什么危害 例如 或 或使用我必须用PHP声明我的变量吗?,php,variables,set,declare,Php,Variables,Set,Declare,我通常设置所有变量,即使它们可能不会返回任何内容。但现在我想知道: 如果我回显一个空变量,会有什么危害 例如 或 或使用 if (isset($data)){ echo $data; } 如果我回音一个空的音,会有什么害处 如果没有定义,则没有“空”变量。所以你试图输出一些不存在的东西。显然,它没有任何意义,会引起注意(尝试使用E\u ALL运行脚本) 如果我回音一个空的音,会有什么害处 如果没有定义,则没有“空”变量。所以你试图输出一些不存在的东西。显然,它没有任何意义,并且会引起注意(尝试
if (isset($data)){
echo $data;
}
如果我回音一个空的音,会有什么害处
如果没有定义,则没有“空”变量。所以你试图输出一些不存在的东西。显然,它没有任何意义,会引起注意(尝试使用E\u ALL
运行脚本)
如果我回音一个空的音,会有什么害处
如果没有定义,则没有“空”变量。所以你试图输出一些不存在的东西。显然,它没有任何意义,并且会引起注意(尝试使用
E_ALL
运行脚本)一般来说,如果您不允许使用不存在的变量,就像它们以前声明过一样,这会更好,因为这会抑制整个类错误。想象一下,如果您有一个变量$foo
,然后您错误地键入了$eoo
<代码>$eoo没有值(默认值除外),但您的程序运行时不会出现任何问题。这会使程序很难调试。要求在使用变量之前声明变量(当然,不仅仅是有条件的),这会让编译器捕获大量错误。一般来说,最好不要像声明变量一样使用不存在的变量,因为这会抑制一整类错误。想象一下,如果您有一个变量$foo
,然后您错误地键入了$eoo
<代码>$eoo没有值(默认值除外),但您的程序运行时不会出现任何问题。这会使程序很难调试。要求在使用变量之前声明变量(当然,不只是有条件地声明),这会让编译器捕获大量错误。这不会造成任何伤害,但会向您显示以下注意事项:
PHP注意:未定义变量:数据在线
它不会造成任何伤害,但会向您显示此通知: PHP注意:未定义变量:数据在线
简单的回答是:避免不必要的错误和注意事项
长答案已经详细阐述过了。短答案:避免不必要的错误和注意事项
答案很长,而且。变量。。。不要在启用错误/错误报告的情况下自行测试,并且
$a
和$b
的值不同。变量。。。不要在启用错误/错误报告的情况下自己测试它,并且$a
和$b
@halfdan的值不同-我不认为这是PHP使用的主流(至少到目前为止)。还是我遗漏了什么?@Jared解析器用于解析文本,编译器用于编译解析文本。即使PHP也有一个编译器,即使它基本上与运行时在同一个步骤中使用。我不认为PHP的编译器捕捉到了丢失的变量,但运行时捕捉到了。@deceze-足够公平了。尽管如此,我可能会说确保变量在使用前声明,除非有方法要求声明它们(比如VBA的选项Explicit
)。@halfdan-我认为这并不是PHP使用的主流(至少到目前为止)。还是我遗漏了什么?@Jared解析器用于解析文本,编译器用于编译解析文本。即使PHP也有一个编译器,即使它基本上与运行时在同一个步骤中使用。我不认为PHP的编译器捕捉到了丢失的变量,但运行时捕捉到了。@deceze-足够公平了。尽管如此,我可能会说确保变量在使用前声明,除非有方法要求声明它们(比如VBA的选项Explicit
)。
<?php
$data = ''; // declare varibale
$a = 'a';
$b = 'b';
if($a==$b)
{
$data = 'Yes they where the same';
};
echo $data;
?>
$data = '';
$data;
if (isset($data)){
echo $data;
}