簡體   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