我想在PHP中返回多個嵌套函數。通過在「break」之後添加一個數字,可以打破多個循環。例如。在PHP中突破多個函數
while(1)
while(1)
while(1)
break 3;
我可以用功能做同樣的事嗎?
我想在PHP中返回多個嵌套函數。通過在「break」之後添加一個數字,可以打破多個循環。例如。在PHP中突破多個函數
while(1)
while(1)
while(1)
break 3;
我可以用功能做同樣的事嗎?
不是我所知道的,它也不是很健康的設計,因爲有問題的父母和祖父母功能永遠不會知道中斷。你應該拋出一個異常,並把它趕上父母,這反過來會拋出一個異常,並將其趕上祖父母等。
要「突破」功能,您可以使用return
。
function somefunction()
{
return;
echo 'This will never get displayed';
}
As the manual states break僅用於循環。
另一種解決方案是爲每個時間添加一個條件。
while(1 && $isTrue)
while(1 && $isTrue)
while(1 && $isTrue)
$isTrue = false;
break;
雖然我不認爲這是一個非常乾淨的方法。
我在這種情況下做的是有一個異常返回值(或對象),並對每個函數返回值的返回值進行值檢查,以確保情況得到適當的傳播或處理,在做遞歸時要小心不過,你可能會錯誤地將樹完全摺疊起來......順便說一句,如果它是一個簡單的退出錯誤的情況下你也可以使用異常。
可能從子函數返回一個特殊結果,表示已滿足特定條件。 WordPress使用WP_Error和is_wp_error()
進行這種操作。任何數量的嵌套函數都可以檢查被調用的函數是否返回錯誤狀態,並選擇將錯誤傳遞給鏈而不是繼續處理。
例子:
function outer() {
$result = inner();
// pass failure back to parent
if(is_wp_error($result)) {
return $result;
}
// other processing
return $final_result;
}
function inner() {
if(some_condition()) {
// generate an error
return new WP_Error('code', 'message');
}
return $other_result;
}
$result = outer();
// did we get an error?
if(is_wp_error($result)) {
echo 'Something went wrong.';
} else {
echo $result;
}
是但Linksku問你不能從多個函數返回。 – AsTeR 2012-01-03 17:45:02