2011-03-12 101 views
2

我打算創建一個將被其他函數使用的檢查函數。這個想法很簡單:如果條件不滿足,通過返回它來停止函數。如何通過其他函數返回函數

這是原來的代碼:

function awesome(){ 
    $a = "2"; 
    if ($a != "1"){return;} 
    echo "awesome"; 
} 

它的工作。因爲$ a是2,所以函數返回並且不出現單詞「awesome」。但是,有幾個功能需要檢查。爲了避免重複,我做到了這種方式:

function test($var){ 
    if ($var != "1"){return;} 
} 

function awesome(){ 
    test("2"); 
    echo "awesome"; 
} 

function awesomeagain(){ 
    test("3"); 
    echo "awesome"; 
} 

但「真棒」 s的出現,並不會返回兩個功能真棒()和awesomeagain()。如何通過添加test()函數來返回這兩個?

謝謝。我非常感謝你的幫助。

+0

感謝您的編輯。我在這裏真的很新,對格式化仍然感到困惑。 – fikrirasyid 2011-03-12 16:06:03

回答

1
function test($var) { 
    return ($var == "1"); 
} 

function awesome() { 
    if (test("2")) { 
     echo "awesome"; 
    } 
} 

function awesomeagain(){ 
    if (test("3")) { 
     echo "awesome"; 
    } 
} 

Fikry,嘗試重新學習的conditional的概念,這是基本的編程技能。沒有它,你會犯很多錯誤的代碼和功能。

1

從你的函數返回使用return關鍵字

function test($var){ 
    if ($var == "1"){ 
     return TRUE; 
    } 
} 

function awesome(){ 
    if (!test("2")){ 
     return FALSE; 
    } 
    echo "awesome"; 
    return TRUE; 
} 
0
function test($var) { 
    if ($var != "1"){ 
     return "awesome"; 
    } 
    // do something else when $var is not "1" here. 
} 
function awesome(){ 
    echo test("2"); 
} 
function awesomeagain(){ 
    echo test("3"); 
} 

這就是它! PHP真棒! :)

+0

嗯..我不這樣做,因爲行動將被放在真棒()和awesomeagain()和這些行動是不同的。順便說一句,是PHP是真棒。感謝您的回覆:D – fikrirasyid 2011-03-12 16:01:51

2

您的test函數必須返回一個值,並且您必須在其他函數中測試此值。事情是這樣的:

function test($var) { 
    if ($var != "1") 
    return false; 
    else 
    return true; 
} 

所以,你的代碼應該是這樣的:

function awesome() { 
    if (test("2")) 
    echo "awesome"; 
} 

但是,如果你想狂熱的檢查,可以拋出異常。這應該是這樣的:

function test($var) { 
    if ($var != "1") 
    throw new Exception(); 
} 

和其他功能的使用

function awesome() { 
    try { 
    test("2"); 
    echo "yeah"; 
    } catch ($e) {}  
} 
+0

哇,謝謝! 'test'是有效的,但我對'awesome()'進行了一些修改,所以代碼如下所示:'if(test(「2」)== true)'那麼它就像一個魅力:D – fikrirasyid 2011-03-12 15:59:22

+0

在php中,好的做法是檢查值和類型,所以使用if(test(「2」)=== true),因爲在php中這將返回true(「2」== true),但是(「2」= == true)將返回false。 – dugokontov 2011-03-12 22:08:05

1

fYou可能不應該依賴於另一個功能停止另一個函數的形式運行。試試這個

function test($var){ 
    if ($var != "1"){return false;} return true; 
} 

function awesome(){ 
    if(test("2")) 
    echo "awesome"; 
} 

function awesomeagain(){ 
    if(test("3")); 
    echo "awesome"; 
} 
+0

感謝您的回覆,它與之前的回覆非常相似,並且只需很小的修改即可:D – fikrirasyid 2011-03-12 16:00:30

相關問題