【问题标题】:How do I conditionally output variables that do not exist in php?如何有条件地输出 php 中不存在的变量?
【发布时间】:2013-10-24 00:19:06
【问题描述】:

所以我有一个变量和一个函数不能用来展示我的思维过程。

代码:

    $variable = "This is a string!";

    function is($var)
    {
      if( isset ( $var ) )
        return true;
      return false;
    }

    if( is ( $variable ) )
      echo "This variable exists!";
    else
      echo "This variable does not exist!";

输出:

    This variable exists!

因为存在$variable,所以函数可以正常工作,但是当$variable没有被设置或定义时会出现问题。

代码:

    function is($var)
    {
      if( isset ( $var ) )
        return true;
      return false;
    }

    if( is ( $variable ) )
      echo "This variable exists!";
    else
      echo "This variable does not exist!";

输出:

      Notice: Undefined variable: variable on line x
      This variable does not exist!

因为这个变量还没有定义,当它被引用时,PHP 会返回一个通知,说你试图引用的这个变量是未定义的。这是一个问题,因为当变量设置不正确时,该函数总是会创建一个通知,而这是一开始就试图避免的。

所以我尝试将变量名作为不带引用的字符串传递。

代码:

    $variable = "This is a string";

    function is($string)
    {
      if(isset($$string)) // Variable Variables
        return $$string;
      return "";
    }

    echo is("variable");

但这仍然不起作用。我不知道如何使用简短的函数优雅地输出一些东西,而不是每次都输入:

    echo (isset($variable) ? $variable : "");

如何使用 php 检查引用是否存在?

【问题讨论】:

  • 为什么需要这样做?对我来说,这似乎是违反直觉的过度优化......
  • @JamesG。当变量不存在时,这将是一种更快的输入方式,更清晰的外观,并且可以根据您想要全局输出的内容轻松定制和更改。
  • 你可以这样做echo @$variable;

标签: php variables undefined output ternary-operator


【解决方案1】:

您只需将@ 添加到您的变量中以避免显示错误

您可以像这样更改代码:

$variable = "This is a string!";
function is($var)
{
  if( isset ( $var ) )
    return true;
  return false;
}

if( is ( @$variable ) )
  echo "This variable exists!";
else
  echo "This variable does not exist!";

你可以发现我把if( is ( $variable ) )改成了if( is ( @$variable ) )

【讨论】:

  • 感谢您的精彩回答!有人在你之前回答了,所以我不得不把它给他们。我还是很感激!
【解决方案2】:

使用错误控制运算符“@”预先添加正在测试的变量/参数。这会抑制表达式中的任何错误 - 例如变量不存在:

test(@$bar);


function test($foo)
{
    if(isset($foo))
        echo "A";
    else
        echo "B";
}

【讨论】:

    【解决方案3】:

    在使用 var 调用函数之前,您需要检查 isset($variable)。也许没有你想要的那么方便,但这就是它的工作原理。

    【讨论】:

      猜你喜欢
      • 2013-09-13
      • 1970-01-01
      • 2011-01-12
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      相关资源
      最近更新 更多