2011-04-01 14 views
1

我知道如何從查詢字符串獲取的價值,如果該參數存在:PHP GET問題:只有當它不在查詢字符串中時,我如何設置變量值?

$hop = $_GET['hop']; 

但我還需要設置一個默認值,如果它不是在查詢字符串。我想這和它沒有工作:

$hop = $_GET['hop']; 

if ($hop = " ") { 
    $hop = 'hardvalue'; 
}; 

請幫我處理情況的查詢字符串具有和不具備「跳」參數的情況下,如果它的存在,但沒有定義:

example.com/?hop=xyz 

&

example.com/ 

&

example.com/?hop= 

PS我不知道我在做什麼,所以如果你向我解釋,也請包括我的確切代碼添加到我的PHP頁面。

回答

1

你已經有了這些繁瑣的解決方案。使用URL或表單參數時,您經常希望將空字符串或零作爲缺失值處理。然後,您可以使用此替代語法:

$hop = $_GET["hop"] or $hop = "hardvalue"; 

它的工作原理是因爲=優先級較高的過or,並且更容易閱讀與多餘的空格。

從PHP 5.3開始它也可以使用:

$hop = $_GET["hop"] ?: "hardvalue"; 

的優勢在這裏的是,這句法不發出聲音了PHP的通知,這對於調試非常有用。

+0

甜,我喜歡這個最好的,因爲它簡單和簡單是優雅的。 – Dustin 2011-04-01 20:47:05

2

使用array_key_exists

if (array_key_exists('hop', $_GET)) 
{ 
// the key hop was passed on the query string. 
// NOTE it still can be empty if it was passed as ?hop=&nextParam=1 

} 
else 
{ 
//the key hop was not passed on the query string. 
} 
2

想過這個問題多一點,並決定它應該是有點更強大的:

$hop = 'hardvalue'; 
if (array_key_exists('hop', $_GET)) { 
    if (!empty($_GET['hop'])) { $hop = $_GET['hop']; } 
} 
+0

我試過這個,它工作。謝謝。 – Dustin 2011-04-01 20:47:22

1

事實上,我會用

$hop = !empty($_GET['hop']) ? $_GET['hop'] : 'default'; 

使用empty()而不是isset()照顧你的第三種情況,其中參數存在但未定義。

此外,在if ($hop = " ")=將需要更改爲===指定,==測試相等。你的方式,if語句將永遠運行,不管什麼$hop平等。

+0

謝謝澄清=與==。 :) – Dustin 2011-04-05 01:52:48