2012-07-30 149 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或更高版本。

但我不會推薦它,因爲它是醜陋的混淆代碼。