Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我必须用PHP声明我的变量吗?_Php_Variables_Set_Declare - Fatal编程技术网

我必须用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;
}