don';如果isset返回false,则初始化变量


don't initialize variable if isset returns false

我有一个简单的语句,如下所示:

$data['title']  =   isset($domain['title']) ? $domain['title'] : '';

这是可以的。然后使用codeigniter活动记录在插入查询中使用数据数组。现在我想问的是,如果isset返回false,是否有一种方法可以不初始化$data['title']。

我知道这里的替代方案

if(isset($domain['title'])){
   $data['title'] = $domain['title'];
}

我想知道我们如何用上面的指令做同样的if

我能看到的最短的方法是:

if (isset($domain['title'])) $data['title'] = $domain['title'];

但请继续使用第二个示例,它更可读。

您可以这样做,但使用if更可读。

isset($domain['title']) && ($data['title'] = $domain['title']);

编辑:使用循环的示例。

foreach (array('title', 'body', 'footer') as $key) {
  if (isset($domain[$key])) {
   $data[$key] = $domain[$key];
  }
}

你可以做的好:

$data['title'] = !isset($domain['title'] ? : $domain['title'];

在php 5.3或更高版本中。

但我不推荐它,因为它是丑陋的、令人困惑的代码。