2017-06-28 27 views
3

我想創建一個php函數。基本上,這就是我:pHp函數 - 測試我的變量是否存在以及是否符合條件

if(isset($myvariable) AND $myvariable == "something") 
{ 
echo 'You can continue'; 
} 

,這就是我想要的東西:

if(IssetCond($myvariable, "something")) 
{ 
echo 'You can continue'; 
} 

我想要的功能,如果該變量存在,測試,如果它確實是測試如果條件得到尊重。否則它返回false。

我已經嘗試了很多東西,但是當$ myvariable不存在時我仍然有問題。

function IssetCond($var, $value){ 
    if(isset($var) AND $var == $value) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

當$ myvariable存在以及條件是否被尊重時,它就起作用。

如果你有幾分鐘的時間來幫助我,我將不勝感激。

感謝

托馬斯

+1

「尊重」是什麼意思? – Swellar

+3

創建函數的想法存在的問題是必須調用一個函數,並將該變量傳遞給該函數。如果該變量不存在,那麼當您在函數調用中使用它的名稱時,它將導致一個錯誤,因爲它不存在! – RiggsFolly

+1

只是兩個技巧:保持同一行上的'{}' - 並不一定是嚴格的PHP標準,但是一個標準正在慢慢建立。其次'AND'可以縮短爲'&&' – ThisGuyHasTwoThumbs

回答

0

你的想法是好的,但如果你傳遞一個變量給你的函數你變量的值傳遞給你的函數。如果你的變量沒有設置,你會得到一個你嘗試用你的函數阻止的錯誤。

您可以將引用傳遞給函數,但如果您之前沒有設置變量,則會導致相同的問題。

2

你可以通過剛纔的名稱,而不是var和使用可變變量

function IssetCond($var, $value){ 
    return (isset($$var) AND $var == $value); 
} 

一樣使用

if(IssetCond('myvariable', "something")) 
{ 
    echo 'You can continue'; 
} 
0

我想我找到了答案,這要歸功於@Teko

$a = "3"; 
    function IssetCond($var, $value){ 
    global $$var; 
    if (isset($$var) && $$var == $value) 
    { return true;} 
    return false; 
} 
if(IssetCond('d', 4)) 
{ 
    echo 'first test'; // wont display 
} 
if(IssetCond("a", 3)) 
{ 
    echo 'second test'; // will display 
} 
if(IssetCond("a", 4)) 
{ 
    echo 'third test'; // wont display 
} 

感謝大家!

相關問題