2012-09-10 74 views
0

那麼,我必須刪除現有的PHP 5.4腳本的警告,我不知道如何正確處理以下問題。PHP如何初始化/解釋一個未定義的變量?

我有一個源代碼一樣

if ($start_id_minus >= 0) 
{ 
    $tmp_link = $link."&id=$start_id_minus"; 
    $tmp_html_previous .= "<a href='$tmp_link'><<&nbsp;previous</a>&nbsp;"; 
} 

這會導致類似通知"Notice: Undefined variable: $tmp_html_previous in <5 lines below>"

所以我要做的就是在此之前的「如果」來初始化變量。 在這種情況下,很明顯,tmp_html_previous $是一個字符串,所以我可以做的是:

$tmp_html_previous = ''; 

但我得到了很多similiar情況下變量的「類型」是不是明顯對我。那麼如何正確地初始化這些變量呢?用NULL?有0?用''?一點都不:var $ tmp;?

+0

您將其初始化爲所需的默認值。它可以是'null','''','0'或任何你需要的東西 – zerkms

+0

首先,爲什麼要使用 '$ tmp_link = $ link。「&id = $ start_id_minus」;' if $ link is not defined 。 其次,你怎麼可能不知道哪個類型初始化變量?如果你的代碼不清晰,你應該考慮重構。 – GolezTrol

+0

概率是我不知道預期的默認值。 –

回答

-1

無論你想要什麼,類型都會自動改變,因爲PHP沒有強類型。

0

0對於您要進行數學運算的任何變量而言,都是明顯的初始值。
truefalse是「布爾變量」的明顯初始值。
null對於其他任何東西都是一個很好的初始值。

+0

考慮這條線_But但是我有很多類似的情況下,變量的「類型」對我來說並不明顯_ – 2012-09-10 07:49:44

+0

因此,它是空的。對此沒有絕對的答案,特別是沒有更具體的例子。只有指導。 – deceze

-1

無論初始化,如果關心的是追加做string字符串:

$tmp = isset($tmp) ? $tmp : '';

然而,null總是顯而易見的解決方案。

+0

關鍵是在一個已定義的點上初始化一個已知的值,所以你不需要'isset'。 – deceze

+0

@deceze那麼檢查值是否已經存在有什麼危害? – Vishal

+0

你不能每次檢查你想使用變量。這只是瘋狂和代碼混亂。因此你想初始化這個變量,所以你知道它存在。你只能對'''''''''''''''''''變量進行控制。 – deceze

0

在這種情況下,因爲它看起來好像你正在構建一個字符串,你可以使用:

$tmp_html_previous = ''; 

或者:

$tmp_html_previous = NULL; 

如果$ tmp_html_previous是一個布爾值,你可以將默認設置爲true或false。

$tmp_html_previous = false; 

如果你正在做的計算:

$tmp_html_previous = 0; 

基本上,這一切都取決於你的應用程序的邏輯。