2010-11-07 49 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;