我想在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