0

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

代码:

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

4

3 回答 3

2

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

test(@$bar);


function test($foo)
{
    if(isset($foo))
        echo "A";
    else
        echo "B";
}
于 2013-10-16T02:27:06.590 回答
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 ) )

于 2013-10-16T02:33:54.417 回答
0

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

于 2013-10-16T02:05:39.010 回答