代码之家  ›  专栏  ›  技术社区  ›  Sliq

“if X,then echo X”可以在PHP中缩短吗?

php
  •  5
  • Sliq  · 技术社区  · 11 年前

    在不使用模板引擎的情况下,最短的方法是在PHP视图中回显内容:

    <?php if (!empty($x)) echo $x; ?>
    

    为了更深入地解释为什么使用 !empty 是个不错的选择请看 here .

    是否可以在不写两次变量名的情况下(像在其他语言中一样)写这个,比如

    !echo $x;
    

    echo? $x;
    
    4 回复  |  直到 9 年前
        1
  •  4
  •   Rebirth    11 年前
    echo @$x;
    

    这不是正确的做法,但是 它更短。 它减少了检查$x是否存在的需要,因为当$x==null时,@silence会忽略抛出的错误;

    编辑

    echo empty($x) ? "" : $x;
    

    是一种更短的方法,它并没有缩短那么多,也不能解决你的问题。

    猜测其他答案提供了一个更好的解决方案,通过寻址为其生成一个简短的函数。

        2
  •  3
  •   scrowler    11 年前

    内置?不

    然而,您可以编写自己的包装器函数来实现:

    $x = 'foobar';
    myecho($x); // foobar
    
    function myecho($x) {
        echo !empty($x) ? $x : '';
    }
    

    这符合“只写一次变量”的要求,但不能像echo命令那样灵活,因为这是一个使用echo的函数,因此不能执行以下操作: myecho($x . ', '. $y) (参数现在总是定义的,一旦命中就不为空 myecho() )

        3
  •  2
  •   Ende Neu    11 年前

    简单的方法是定义一个助手函数,以便:

    function mEcho($someVariable) {
      if(!empty($someVariable) echo $someVariable;
    }
    

    我不确定这是否是你的意图。

        4
  •  2
  •   Christian Gollhardt    11 年前

    是的,您可以编写函数:

    function echoIfNotEmpty($val) {
       if (!empty($val)) {
           echo $val;
       }
    }
    

    用法:

    echoIfNotEmpty($x);
    

    当然可以缩短函数名。


    如果您不知道,如果var被初始化,您也可以执行以下操作:

    function echoIfNotEmpty(&$val = null) {
       if (!empty($val)) {
           echo $val;
       }
    }
    

    大多数时候,我们需要做前缀和附加

    function echoIfNotEmpty(&$val = null, $prefix = '', $suffix = '') {
       if (!empty($val)) {
           echo $prefix . $val . $suffix;
       }
    }
    
    echoIfNotEmpty($x, '<strong>', '</strong>');
    
    推荐文章