2011-06-09 59 views
0
$specify_step = ($_GET['specify_step']) ? $_GET['specify_step'] : getNextStep($returnId,$type); 

鑑於上述說法,有沒有一種方法可以簡化這個if語句甚至更多,以至於我不必兩次說$ _GET ['specify_step']?減少這個if..else聲明的方法更多嗎?

在我訪問GET或COOKIES等的情況下,它總是看起來多餘而且「更符合語言」,那麼它就是需要的。

+0

我不知道PHP,但''_GET ['指定_step']'返回一個布爾值? – Lobo 2011-06-09 02:37:06

+0

我想如果它返回任何東西,它將被視爲true,否則它將被視爲false。 – Nik 2011-06-09 02:39:04

+0

@Nik無論是空還是「0」都會評估爲「false」。請參見[docs here](http://php.net/manual/en/language.types.boolean.php#language.types.boolean.casting)。 – Wiseguy 2011-06-09 02:43:59

回答

1
$specify_step = ($_GET['specify_step']) ?: getNextStep($returnId,$type); 

它給我足夠的邏輯意義,我必須去查找....和according to php.net,它在PHP 5.3中工作。如果你使用5.3,你很幸運。

+0

優秀 - 正是我所期待的。 – Susan 2011-06-09 04:03:04

2

我不認爲它比這更緊湊。我唯一的想法是做一個臨時變量來保存$_GET['specify_step'],但似乎並沒有縮短。

0

正如我在你的問題的評論中提到的,我不知道PHP。

檢查是否有效。在大多數語言中,如果第一部分爲真,則不會調用功能getNextStep

$specify_step = ($_GET['specify_step']) || getNextStep($returnId,$type); 
+0

這不應該起作用 - PHP文檔指定邏輯或運算符返回一個布爾值,而不是它的參數(顯然,假設'specify_step'不是布爾值)。 – 2011-06-09 02:42:50

+0

@Andrew Medico道歉,我應該點擊答案嗎?因爲我提到*大多數語言*它可能會幫助別人尋找類似的東西... – Lobo 2011-06-09 02:51:29

0

會有這種替代布爾評估方法,但它只是表明你有重複東西:(也作品,未經裝飾的換行符)

$specify_step = $_GET['specify_step'] 
or 
$specify_step = getNextStep($returnId,$type); 

用PHP 5.3你可能當然使用?:快捷鍵。如果可以的話。

我個人可以替代$_GET->default('specify_step', 123)這種情況。