2015-11-29 2 views
0

я следующее, если заявление:PHP, как поставить если заявление внутри эхо блока

<?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> tag
Я не уверен, как добавить инструкцию if внутри эха

+0

Попробуйте взглянуть на «тройной оператор»: http://www.hackingwithphp.com/3/12/4/the-ternary-operator – arkascha

ответ

2

Не делайте этого.

Игнорирование на мгновение, что вывод HTML-кода внутри echo таких утверждений является анти-шаблоном (подумайте об использовании механизма шаблонов!), Вы сделаете ваш код очень трудным для чтения, смешав свою логику и ваше содержимое даже больше, что вы будете делать, если вы используете условный оператор * здесь.

На самом деле, если у вас есть что-то большее, чем базовая интерполяция строк в ваших выводах, вы не отделяете свою логику и контент достаточно.

Здесь, это будет выглядеть примерно так:

$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

Только что обновил мой код, оператор эха находится в массиве, должен теперь больше смысла –

+0

@SamSkirrow: Лучше, но мы до сих пор не знаем, что 'selected (...)' должен делать. –

+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 заявление.

Смежные вопросы