在数组归档中添加一些逻辑

时间:2010-11-07 11:21:34

标签: php arrays

我正在尝试填充一个数组,我想在其中添加一些逻辑,这样就不会给我错误了...

以下是代码:

$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

关键是没有未声明的变量试图插入我的数组,因为它会导致错误...谢谢!

3 个答案:

答案 0 :(得分:3)

您可以使用? :三元运算符:

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

或者,使用empty()进行检查

答案 1 :(得分: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']
  );

}

答案 2 :(得分:0)

您可以使用ternary operator,这样如果变量不存在,NULL将用作值。但在这种情况下,你实际上想要完全忽略数组中的某些键。所以只需分别设置每个键:

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