【发布时间】:2019-09-07 01:04:32
【问题描述】:
我有以下代码:
<input class="mt upbb" type="text" name="your_name" id="your_name" value="<?php echo info_username_get_meta( 'your_name' ); ?>">
如果值为空,我如何添加默认文本?提前致谢!
【问题讨论】:
标签: php html placeholder
我有以下代码:
<input class="mt upbb" type="text" name="your_name" id="your_name" value="<?php echo info_username_get_meta( 'your_name' ); ?>">
如果值为空,我如何添加默认文本?提前致谢!
【问题讨论】:
标签: php html placeholder
如果你想内联,你总是可以使用三元运算符:
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; ?>">
【讨论】:
我将扩展上面的答案,并用一个简短的 php 方式来做:
value="<?= info_username_get_meta( 'your_name' ) ?? 'DEFAULT NAME'; ?>"
<?= ?> 是 <?php echo '' ?> 的替代品
?? 是三元运算符的替代品,基本上如果第一个有数据,则使用它,否则打印第二个。
【讨论】:
如果你使用的是 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 : '') ?>">
【讨论】:
如果 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,则空合并运算符 (??) 也将起作用。它专门针对空值,因此它不适用于空字符串或其他虚假值。
【讨论】: