繁体   English   中英

如何有条件地输出PHP中不存在的变量?

[英]How do I conditionally output variables that do not exist in php?

所以我有一个变量和一个函数无法证明我的思维过程。

码:

    $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检查引用是否存在?

将要测试的变量/参数放在错误控制运算符“ @”的前面。 这样可以抑制表达式中的任何错误-例如不存在的变量:

test(@$bar);


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

您只需要在变量中添加@即可避免出现错误

您可以这样更改代码:

$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 ) )

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM