2014-03-27 79 views
0

所以我要把它放到我的腳本多行if語句不起作用?

if (!isset($params['q']) || !$params['q']) { 
    $params['q'] = 'trending'; 
} 


if (!isset($params['meal']) || !$params['meal']) { 
    $params['meal'] = 0; 
} 

if (!isset($params['sort']) || !$params['sort']) { 
    $params['sort'] = 0; 
} 

    $params = array_unique($params); 

現在發生的$params['q'] = 'trending'$params['meal'] = 0 但可疑的sort將全部跌出了奇怪的事情。如果我把sort提前meal,而不是meal顯示出sort會顯示出來。如果我在另一個命令後面輸入sort,那麼所有三個都會列出。有什麼我在這裏失蹤?看來,如果在PHP中,我不能做超過兩個if語句連續?

array (size=2) 
    'q' => string 'trending' (length=8) 
    'meal' => int 0 

這是出切換順序,現在如果我把if語句2和3,我得到

array (size=3) 
    'q' => string 'trending' (length=8) 
    'meal' => int 0 
    'sort' => int 0 

之間的命令這是我想要

+1

你能張貼'的var_dump($ params)方法的輸出;'這段代碼後,對不對? – akirk

+0

適用於我 - 我從var_dump獲得了{[「q」] => string(8)「trending」[「meal」] => int(0)[「sort」] => int(0)}。 – larsAnders

+1

必須有其他的干擾。你可以在代碼片段之前和之後添加更多的原始代碼嗎? (這是一個直接剪切和粘貼,或者它可能是你的代碼中的大括號有點不同嗎?) – akirk

回答

0

你不是什麼試圖看看密鑰是否存在?如果是這樣,您可能需要使用array_key_exists,像這樣:

if (!array_key_exists('q', $params)) { 
    $params['q'] = 'trending'; 
} 

if (!array_key_exists('meal', $params) { 
    $params['meal'] = 0; 
} 

if (!array_key_exists('sort', $params) { 
    $params['sort'] = 0; 
} 

$params = array_unique($params); 
+0

我didn'不知道,謝謝! :D但似乎我的問題是現在與array_unique。我想我將不得不做出自己的功能,以確保沒有重複。 – user3024101