【问题标题】:How to add a default value if empty?如果为空,如何添加默认值?
【发布时间】: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


    【解决方案1】:

    如果你想内联,你总是可以使用三元运算符:

    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; ?>">
    

    【讨论】:

    • 第二个肯定更优雅。我喜欢尽可能在我的 HTML 中保留较大的 PHP 块。一定要做第二个。
    【解决方案2】:

    我将扩展上面的答案,并用一个简短的 php 方式来做:

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

    &lt;?= ?&gt;&lt;?php echo '' ?&gt; 的替代品

    ?? 是三元运算符的替代品,基本上如果第一个有数据,则使用它,否则打​​印第二个。

    【讨论】:

    • 不错的选择,在使用 5.4 的公司工作时,我有时会忘记 PHP 的新功能。
    【解决方案3】:

    如果你使用的是 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 : '') ?>">
    

    【讨论】:

      【解决方案4】:

      如果 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,则空合并运算符 (??) 也将起作用。它专门针对空值,因此它不适用于空字符串或其他虚假值。

      【讨论】:

      • 关于 ?: vs ?? 的重要信息
      猜你喜欢
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 2012-12-01
      相关资源
      最近更新 更多