2014-09-23 79 views
0

問題是如何從嵌套函數調用中退出函數?換句話說:php返回函數退出點

function action() { 
    // some working code 
    KillingFunction(); 
    // code, that will not execute 
} 

僞代碼,功能可能看起來像:

function KillingFunction() { 
    return return; 
} 

我當然可以:

function KillingFunction() { 
    die(); 
} 

但在這樣的情況下,即低於操作的所有代碼()將會死亡。

這種情況是否有某種生活方式?

+0

爲什麼你需要這樣的功能? – 2014-09-23 07:54:48

+1

'break;'? – MaveRick 2014-09-23 07:57:38

+0

你不能這樣做。如果'KillingFunction()'是從頂級腳本而不是函數調用的呢? – Barmar 2014-09-23 07:57:41

回答

3

只是檢查內部函數返回值:

function main($terminate) { 
    if (dieFunction($terminate)) { 
     return false; 
    } 

    echo "Not dead too!"; 
    return true; 
} 

function dieFunction($terminate = true) { 
    if ($terminate) { 
     return false; 
    } 

    echo "I'm not dead!"; 
    return true; 
} 

main(true); // no output; 
main(false); // "I'm not dead!Not dead too!" 

您可以返回值適用不同的邏輯。

0

您可以退出使用return功能:

function action() { 
    // some working code 
    return 0; 
    // code, that will not execute 
} 
+0

我認爲他知道這一點。他希望在'KillingFunction'中加入一些東西,這會強制呼叫者立即返回。 – Barmar 2014-09-23 08:00:45

+0

嗯。然後我想知道他爲什麼要使用'KillingFunction' .. – JoelP 2014-09-23 08:02:46

+1

想必它會做一些事情,然後或者正常返回或者使調用者返回。目前尚不清楚整體意圖是什麼,它似乎是一個糟糕的不良聯動模式。 – Barmar 2014-09-23 08:05:18