2012-01-21 19 views
0

我有這樣的PHP代碼行PHP isset速記否則返回數組不工作

$data['viewData']['filter'] = isset($parameters['filter']) ? $parameters['filter'] : array('filter1', 'filter2', 'filter3', 'filter4'); 

與isset速記一些錯誤,因爲當我print_r($data['viewData']['filter']與其他活躍,沒有返回值/空/空。

什麼可能是錯的?

編輯,添加更多的信息:

代碼控制器內部:

if (isset($parameters['filter'])) 
{ 
    $data['viewData']['filter'] = $parameters['filter']; 
} 
else 
{ 
    $data['viewData']['filter'] = array('filter1', 'filter2', 'filter3', 'filter4');    
} 
$data['viewData']['query'] = $parameters['search']; 
$data['viewData']['results'] = $searchResults; 
$data['view'] = 'searchResults'; 
$this->load->view('includes/template', $data); 

代碼中的觀點:

prePrint($viewData['apis']); 

,我什麼也沒得到,當其他人進入

Codeigniter被用作框架 * prePrint是隻是包含<pre>print_r();

+0

代碼沒有問題。你確定變量沒有受到其他任何影響嗎? – Dan

+0

一點也不奇怪,因爲如果isset爲真,返回應該返回的數據,但如果沒有,則不返回 – Alex

+0

你確定它正在觸及else條件嗎?嘗試把它放在一個if/else塊中,並執行一些調試輸出來確認$參數['filter']真的沒有設置,當你認爲它不是... –

回答

2

我真的不明白你的意思由它返回「沒什麼/空/空」,因爲一個變量不能立刻返回那些所有3個自定義功能。 isset不檢查是否存在任何數據,它只檢查是否設置了變量或數組索引,因此如果您必須確定它已設置且還包含數據,則您需要嘗試以下操作:

if (isset($parameters['filter']) && $parameters['filter']) 
+0

:D它不是什麼,空,空......我的意思是它只是不返回數據。並感謝您的解決方案,這就是我所缺少的**確保它已設置並且還包含數據** – Alex