在PHP中有没有办法在foreach中重新启动循环,或者更改开关中的测试值? 如果我在一个数组中循环,而在其中一个循环中间,我发现一些小问题,改变…………并且需要再试一次…有没有一种方法可以在不从数组中获取下一个值的情况下跳回循环的顶部
我怀疑这是否存在,但它可能是一些关键字,如在PHP中有没有办法在foreach中重新启动循环,或者更改开关中的测试值? 如果我在一个数组中循环,而在其中一个循环中间,我发现一些小问题,改变…………并且需要再试一次…有没有一种方法可以在不从数组中获取下一个值的情况下跳回循环的顶部,php,loops,foreach,switch-statement,continue,Php,Loops,Foreach,Switch Statement,Continue,我怀疑这是否存在,但它可能是一些关键字,如继续或中断。事实上,它非常类似于continue,只是它不获取下一项,而是维护内存中的内容 如果不存在任何内容,我是否可以在数组中插入一些内容,使其成为循环中的下一个键/值 也许过一会儿(array_shift())会更容易 或者我认为循环中的递归函数可能会起作用 好的,我的问题随着我的键入而不断发展,所以请查看以下伪代码: foreach($storage_locations as $storage_location) { switch($st
继续
或中断
。事实上,它非常类似于continue
,只是它不获取下一项,而是维护内存中的内容
如果不存在任何内容,我是否可以在数组中插入一些内容,使其成为循环中的下一个键/值
也许过一会儿(array_shift())会更容易
或者我认为循环中的递归函数可能会起作用
好的,我的问题随着我的键入而不断发展,所以请查看以下伪代码:
foreach($storage_locations as $storage_location) {
switch($storage_location){
case 'cookie':
if(headers_sent()) {
// cannot store in cookie, failover to session
// what can i do here to run the code in the next case?
// append 'session' to $storage_locations?
// that would make it run, but other items in the array would run first... how can i get it next?
} else {
set_cookie();
return;
}
break;
case 'session':
set_session();
return;
break;
}
}
我确信没有关键字可以更改交换机中流中测试的值。。。那么,我应该如何重构此代码以实现故障切换呢?不是使用
foreach
,而是使用更多的手动数组迭代:
while (list($key, $value) = each($array)) {
if (...) {
reset($array); // start again
}
}
不过,看起来简单的失败也能奏效:
switch ($storage_location) {
case 'cookie':
if (!headers_sent()) {
set_cookie();
break;
}
// falls through to next case
case 'session':
这不起作用吗?