【问题标题】:PHP - check if a variable is set then print it in one command [duplicate]PHP - 检查是否设置了变量,然后在一个命令中打印它[重复]
【发布时间】:2012-12-11 21:04:10
【问题描述】:

可能重复:
What is the PHP shorthand for: print var if var exist

为了打印一个变量,我这样做:

if(isset($var)) print $var;

但我在这里重复 $var 2 次。有没有办法让它看起来像:

If $var exists then print it

而不是

If $var exists then print $var

【问题讨论】:

  • 再调用变量有什么问题?
  • 没有问题,我只是在寻找一种方法来改进我的代码(如果有的话)。它遵循与我了解到我可以做的示例相同的想法: = $var ?> 而不是 ..
  • 没有必要缩短它,更短并不总是更好。作为旁注,短标签也不总是一个好主意,因为它们在某些 PHP 版本中默认禁用。
  • 回声($var)? $var : "";
  • @SureshKamrushi :这不会对变量产生影响。如果变量不存在,将抛出错误。

标签: php if-statement


【解决方案1】:

你可以使用 print (isset($var) ? $var : '');

?:ternary operator

【讨论】:

  • 这里还有 $var 重复;
  • 是的,但我会访问 $var 2 次。我正在寻找的就像一个函数或一种编写方式:If_this_variable_exists_then_print_it($var);
  • @vladimire 没有办法做到这一点,除非自己编写函数等。这就是语言的工作方式;接受语言的本来面目要容易得多。
  • 实际上没有办法对函数中未定义的变量做任何事情,就像在评论中一样。无论如何它都会打印一个通知。
【解决方案2】:

$var初始化为空字符串,这样就不需要if-check了。

假设你是$var = $_REQUEST['var'];,那你就倒霉了。

恕我直言,这是一个微优化,并不是很重要。

【讨论】:

    【解决方案3】:

    使用错误控制运算符“@”http://php.net/manual/en/language.operators.errorcontrol.php的帮助

    echo @$var;
    

    我不认为使用“如果 $var 存在则打印它”比“如果 $var 存在则打印 $var”更快。在内部,检查变量的脚本引擎是否已设置。可能是微优化。

    此类问题可能会在 IT 测验中提出。 我记得一个问题“如何编写一个打印字符串的程序。条件是不要使用分号”。答案已经给出。

    <?php if(print("Hello World")){}
    

    【讨论】:

    • No. 永远不要故意使用静音运算符。 永远!
    【解决方案4】:

    你可以&lt;?php echo @$var; ?&gt;. Or &lt;?= @$var ?&gt;.

    【讨论】:

    • No. 永远不要故意使用静音运算符。 永远!
    【解决方案5】:

    不幸的是,没有针对此问题的简短 PHP 内置解决方案。

    在我们的框架中,我们使用自己的函数:

    function isset_(&$aVariable, $aDefaultValue = null)
    {
        if (isset($aVariable)) return $aVariable;
        return $aDefaultValue;
    }
    

    然后你可以这样做:

    echo isset_($var);
    

    【讨论】:

    • 双下划线通常用于 PHP 魔术函数中。最好不要在用户定义的函数中使用。 "__isset" 也是一个神奇的函数。
    • @habeebperwad 谢谢。函数名称已更改。但逻辑保持不变。
    猜你喜欢
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    相关资源
    最近更新 更多