2011-08-10 190 views
1

有人可以給我一個如何使用PHP三元運算符的例子,它將使用$ _GET(可以在URL中定義)檢查變量,如果它不在URL中,則檢查var被設置在另一個PHP文件中。如果它沒有在URL或其他PHP文件中設置,那麼我希望它等於「默認」。三元運算符問題

+0

那麼,你會怎麼做這個*不*三元?一旦完成,改變表格 - 如果可行的話 - 變成一個簡單的練習。 (也就是說,顯示*現有的代碼*以完成所期望的任務)。 – 2011-08-10 21:13:18

+0

你是什麼意思,「檢查var是否設置在另一個PHP文件中」?如果包含這個其他的PHP文件並且該變量不是類的一部分等,它就好像它已經在這個文件中定義一樣,下面的答案應該有所幫助。但如果你的意思是「另一個PHP文件」的其他內容,你應該添加一些細節。 – FrankS

+0

對不起,沒有解釋,但這是一個很好的解釋。基本上,我想顯示各州使用不同的URL爲每個國家,然後我還需要在整個網站的許多頁面顯示這些不同的狀態,我只想在包含之前在每個文件的頂部設置而不必擔心在這些頁面的鏈接中包含查詢字符串。希望這是有道理的! – Zoolander

回答

3
$myVar = isset($_GET["someVar"]) ? $_GET["someVar"] : (isset($someVar) ? $someVar : "default"); 
3
$value = isset($_GET['somevar']) ? $_GET['var'] : $default_value; 

在最新的PHP版本,有這樣一個快捷版本:

$值= isset($ _ GET [ 'somevar']):$ DEFAULT_VALUE; (與第一個版本不一樣)

您可以使用$GLOBALS['nameofvar']來查看是否已經定義了特定的PHP變量,但如果您正在執行函數內部的檢查,則會出現問題。

+0

這個快捷方式是否像'isset'一樣按預期工作?我的理解是,它會返回表達式的結果(在isset(...)'的情況下這將是'true'),所以你需要使用類似'$ _GET ['somevar' ]?:$ default_value;' – Problematic

+0

如果在腳本查詢中沒有'somevar',那麼'$ _GET ['somevar']'不會存在,isset()將返回false。然而,沒有什麼說你的腳本的其他部分不能在它到達這個三元運算符之前擺弄$ _GET。 –

+1

注意:因爲isset返回一個布爾值,所以如果設置了$ _GET ['somevar']',快捷方式版本中的'$ value'將是布爾值true –

2

您正在尋找這樣的事情:

if(isset($_GET["MyVar"])) 
{ 
    $newVar = $_GET["MyVar"]; 
} 
else if(isset($myVar)) 
{ 
    $newVar = $myVar; 
} 
else 
{ 
    $newVar = "default"; 
} 

$newVar = isset($_GET["MyVar"]) ? $_GET["MyVar"] : (isset($myVar) ? $myVar : "default"); 
+1

碎紙機打我到三元版本的編輯:) – evasilchenko