Как добавить значение по умолчанию, если оно пустое? - PullRequest
1 голос
/ 16 апреля 2019

У меня есть следующий код:

<input class="mt upbb" type="text" name="your_name" id="your_name" value="<?php echo info_username_get_meta( 'your_name' ); ?>">

Как я могу добавить к этому текст по умолчанию, если значение пустое? Заранее спасибо!

Ответы [ 4 ]

4 голосов
/ 16 апреля 2019

Вы всегда можете использовать троичный оператор, если хотите сделать что-то встроенное:

value="<?php echo (!empty(info_username_get_meta( 'your_name' )) ? info_username_get_meta( 'your_name' ) : 'DEFAULT NAME' ; ?>"

Или выделите его и присвойте имя в приведенном выше коде:

<?php
$name = (!empty(info_username_get_meta( 'your_name' )) ? info_username_get_meta( 'your_name' ) : 'DEFAULT NAME';
?>
<input class="mt upbb" type="text" name="your_name" id="your_name" value="<?php echo $name; ?>">
1 голос
/ 17 апреля 2019

Если функция info_username_get_meta ваша, вы можете изменить ее так, чтобы она принимала значение по умолчанию в качестве второго параметра и возвращала его, если ничего не найдено для первого параметра

function info_username_get_meta($username, $default)
{
    $meta = // whatever happens with $username to get meta
    return $meta ?: $default;
}

Я думаю, это сделало бы код представления немного чище.

Если у вас нет доступа к этой функции, вы можете использовать это выражение

<?php echo info_username_get_meta( 'your_name' ) ?: 'default value'; ?>

Оператор ?: является укороченным троичным оператором. Он оценивает левое значение, если оно не ложное, и в этом случае он использует правое значение. Эта сокращенная версия троичной версии доступна с PHP 5.3.

Нулевой оператор слияния (??) также будет работать, если «пустое» значение, возвращаемое вашей функцией, равно null. Он специально обращается к нулевым значениям, поэтому он не будет работать с пустыми строками или другими ошибочными значениями.

1 голос
/ 17 апреля 2019

Если вы используете php 7+, вы можете сделать это:

<input class="mt upbb" type="text" name="your_name" id="your_name" value="<?php echo (info_username_get_meta( 'your_name' ) ?? '') ?>">

В противном случае вы можете использовать:

<input class="mt upbb" type="text" name="your_name" id="your_name" value="<?php echo (!empty($value = info_username_get_meta( 'your_name' )) ? $value : '') ?>">
1 голос
/ 17 апреля 2019

Я подробно остановлюсь на приведенном выше ответе и добавлю короткий php способ сделать это:

value="<?= info_username_get_meta( 'your_name' ) ?? 'DEFAULT NAME'; ?>"

<?= ?> является заменой для <?php echo '' ?>

?? является заменой троичных операторов, в основном, если первый содержит данные, которые он использует, в противном случае он печатает второй.

...