2012-07-30 91 views
0

不初始化变量我有一个简单的声明是这样的:如果isset返回false

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

这是确定。数据数组然后用于使用codeigniter活动记录的插入查询中。现在我想问一下,如果isset返回false,那么不要初始化$ data ['title']。

我知道这里的替代

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

我想知道我们如何能与上指令做同样的if

+0

这是一个使用三元差的情况。任何允许您以三元形式执行此表达式的解决方案都将不明确,并且最好让代码混淆。 – 2012-07-30 03:53:23

回答

0

你可以这样做,但使用if更具可读性。

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

编辑: 使用循环的示例。

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

但如果我有7或8个字段,我会使用7或8,如果?我需要简单的一行代码来处理。整洁干净 – 2012-07-30 03:52:58

+0

@raheelshan你可以使用循环。 – xdazz 2012-07-30 03:53:45

+0

你可以举一个循环的例子 – 2012-07-31 07:39:53

2

我可以看到这样做的捷径是:

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

但随着你的第二个例子中坚持,这是更具可读性。

0

也可以这样做:

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

在PHP 5.3或更高版本。

但我不会推荐它,因为它是丑陋的混淆代码。