2011-11-27 110 views
1

我通常会设置所有变量,即使它们可能不会返回任何东西。但现在我想知道:我必须在PHP中声明我的变量吗?

如果我回显一个空变量会有什么危害?

例如。

<?php 

$a = 'a'; 
$b = 'b'; 

if($a==$b) 
{ 
$data = 'Yes they where the same'; 
}; 


echo $data; 

?> 

为什么我要这样做?

<?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; 
} 
+3

变量...不是varibale – Macmade

+0

启用错误/错误报告以及'$ a'和'$ b'的不同值来自己测试。 – nickb

回答

4

如果我回显一个空的varibale会有什么危害?

如果您没有定义它,没有“空”变量。所以你试图输出一些不存在的东西。很明显,这是没有意义的,并导致通知(尝试使用E_ALL运行脚本)

1

通常情况下,如果不允许使用不存在的变量,就好像它们之前被声明一样,因为这会抑制整个类的错误。想象一下,如果你有一个变量$foo,并且稍后你会错误$eoo$eoo没有任何价值(默认值除外),但程序运行时没有任何投诉。这可能会使程序非常难以调试。在使用变量之前,需要声明变量(当然,不仅仅是有条件地),让编译器捕获大量的错误。

+2

你的意思是解析器而不是编译器,对吧? –

+0

@JaredFarrish,为什么? PHP有一个字节码编译器.. – halfdan

+0

@halfdan - 我不认为这真的是PHP使用的主流(至少尚未)。或者我错过了什么? –

1

它不会造成任何伤害,但它会告诉你这个通知:

PHP公告:未定义的变量:数据线

3

答案很简单:为了避免不必要的错误和注意事项。

长答案已在herehere中阐明。