我想在PHP中返回多个嵌套函数。通过在“break”之后添加一个数字,可以打破多个循环。例如
while(1)
while(1)
while(1)
break 3;
我可以用功能做同样的事情吗?
答案 0 :(得分:3)
不是我知道的,它也不是很健康的设计,因为有问题的父母和祖父母的功能永远不会知道休息。您应该抛出异常并将其捕获到父级上,而父级又会抛出异常并将其捕获到祖父母等上。
答案 1 :(得分:1)
要“断开”功能,您可以使用return
。
function somefunction()
{
return;
echo 'This will never get displayed';
}
答案 2 :(得分:1)
另一个解决方案是为每个人添加一个条件。
while(1 && $isTrue)
while(1 && $isTrue)
while(1 && $isTrue)
$isTrue = false;
break;
虽然我不认为这是一种非常干净的方法。
答案 3 :(得分:0)
As the manual states break仅适用于循环。
答案 4 :(得分:0)
在这种情况下我做的是具有异常返回值(或对象),并在每个函数返回点对返回值进行值检查,以确保传播或处理相应的情况,在进行递归时要小心,你可能会错误地折叠树....顺便说一句,如果它是一个简单的退出错误的情况,你也可以使用例外。
答案 5 :(得分:0)
可以从子函数返回特殊结果,表明已满足特定条件。 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;
}