2010-11-07 51 views
0

我想填補一個數組,我想添加一些邏輯在裏面,所以它不會給我回錯誤...添加一些邏輯陣列備案

下面是代碼:

$entries_mixes = array(); 

foreach ($entries_query->result_array() as $entry) { 


    $entries_mixes[] = array('title' => $entry['title'], 
     'body' => $entry['body'], 
     'author' => $entry['author'], 
     'date_time' => $entry['date_time'], 
     'id' => $entry['id'], 
     'mix_name' => $mix['name'], 
     'photo_name' =>$photo['name'] 
    ); 


} 

我想要做的是能夠檢查是否存在變量的存在之前,我把它們放入數組.... 因此,例如if(isset($mix['name'])) then insert to array or else do nothing

點不具有未聲明的變量試圖被插入到我的數組中,導致它返回錯誤...謝謝!

+0

嗯,有一對夫婦對這個問題的不同解釋的......你想從'$ entries_mixes'完全忽略一個條目,如果它的任何值都沒有設置?或者你希望每一個結果出現在'$ entries_mixes',每個結果可能有遺漏值? – 2010-11-07 11:32:44

+0

謝謝大家快速回復... // @理查德:設定值爲null會爲我做的工作。 – rabidmachine9 2010-11-07 11:47:11

回答

3

可以使用? :三元運算符:

$entries_mixes[] = array( 
     'title' => (isset($entry['title']) ? $entry['title'] : null), 
     'author' => (isset($entry['author']) ? $entry['author'] : null), 
    ... 

或者,使用empty()的檢查

+3

爲了擴展這種使用'array_filter'而不回調作爲第二個參數,以除去所有項目等於'FALSE'(例如'null')。 – Johnny 2010-11-07 11:38:18

0

下面將檢查title沒有了entry數組中存在,或者如果它是空白。如果是這樣,它將完全跳過該條目並繼續循環中的下一個元素。

$entries_mixes = array(); 

foreach ($entries_query->result_array() as $entry) { 
    if (empty($entry['title'])) { 
    continue; 
    } 

    $entries_mixes[] = array('title' => $entry['title'], 
    'body' => $entry['body'], 
    'author' => $entry['author'], 
    'date_time' => $entry['date_time'], 
    'id' => $entry['id'], 
    'mix_name' => $mix['name'], 
    'photo_name' =>$photo['name'] 
); 

} 
+1

'空($進入[ '標題'])'已經等同於'!isset($進入[ '標題'])|| !$進入[ '標題']'。 – Gumbo 2010-11-07 11:29:51

0

您可以使用ternary operator這樣,如果不存在的變量,NULL用作值。但在這種情況下,您實際上完全想要從陣列中省略某些鍵。因此,只要設定每個按鍵分別:

$entry[] = array(); 
... 
if (isset($mix['name'])) { 
    $entry['mix_name'] = $mix['name']; 
} 
... 
$entries_mixes[] = $entry;