2015-11-29 51 views
0

我有以下if語句:PHP如何把一個if回聲塊內聲明

<?php if (isset ($prfx_stored_meta['wedding-user'])) selected($prfx_stored_meta['wedding-user'][0], 'select-one'); ?> 

,我需要插入此回聲聲明:

$users = get_users(); 
$i = 0; 
// Array of WP_User objects. 
foreach ($users as $user) { 
    echo "<option value='select-$i' >" . esc_html($user->display_name) . "</option>"; 
    $i++; 
} 

如果只是關閉<option>前標籤
我不知道如何在echo中添加if語句

+0

試試看「三元運算符」:http://www.hackingwithphp.com/3/12/4/the-ternary-operator – arkascha

回答

2

不要。

忽略該輸出所嵌入到echo陳述你這樣的HTML一會兒是反模式(可以考慮使用一個模板引擎!),你會做你的代碼真的很難受,甚至混合你的邏輯和內容閱讀更多,如果您在此使用有條件的運算符 *,您將會這樣做。實際上,如果你的輸出語句中除了基本的字符串插值以外,還沒有足夠的邏輯和內容。

在這裏,它會是這個樣子:

$users = get_users(); 
$i = 0; 
// Array of WP_User objects. 
foreach ($users as $user) { 
    echo "<option value='select-$i' "; 
    if (isset($prfx_stored_meta['wedding-user'])) 
     echo selected($prfx_stored_meta['wedding-user'][0], 'select-one'); 
    echo ">" . esc_html($user->display_name) . "</option>"; 

    $i++; 
} 

瞭解它是如何凌亂?並且使用條件運算符的很長一行,它將是甚至更​​差

*不是「三元操作符」! 「三元」是它的名字,而不是它的名字。

+0

剛剛更新了我的代碼,echo語句在數組中,應該現在更有意義 –

+0

@SamSkirrow:更好,但我們仍然不知道「選擇(......)」應該做什麼。 –

+0

啊,我明白你的意思了。 selected()是wordpress中的一個函數http://codex.wordpress.org/Function_Reference/selected - 允許wordpress記住選擇 –

1

您必須使用三元運算符:www.php.net/ternar Ÿ

試試這個:

echo "<option value='select-$i' >" . esc_html($user->display_name) . ((isset($prfx_stored_meta['wedding-user'])?selected($prfx_stored_meta['wedding-user'][0], 'select-one'):'')."</option>"; 

來源:if block inside echo statement?

0

您將要使用的三元操作符充當縮短if/else語句。