2011-11-27 99 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中闡明。