2013-10-16 31 views
0

所以我有一個變量和一個函數不能證明我的思維過程。如何有條件地輸出在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! 

因爲$變量存在,此功能將正常工作,但在$變量尚未設置或定義的問題。

代碼:

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?

+0

你爲什麼要這麼做?這似乎可能是反直覺過度優化我... –

+0

@JamesG。這樣可以更快地輸入,更清晰地查找,並且可以根據您想要在變量不存在時全局輸出的內容輕鬆進行自定義和更改。 – Ben

+0

你可以做'echo @ $ variable;'。 –

回答

2

在錯誤控制運算符「@」前加上正在測試的變量/參數。這抑制了表達的任何錯誤 - 比如變量不存在:

test(@$bar); 


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

您需要先檢查isset($ variable),然後再調用函數var。也許沒有你想要的那麼方便,但這就是它的工作原理。

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

+1

感謝您的好評!有人在你面前回答,所以我不得不把它交給他們。我仍然非常感激! – Ben