如果我正在循环一个数组,并且在其中一个循环的中间我发现一些小问题,改变......一些东西......,并且需要重试......有没有办法跳回到循环顶部而不从数组中获取下一个值?
我怀疑这是否存在,但它会是一些关键字,例如continue
or break
。事实上,它很像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
}
}
http://php.net/each http://php.net/each
http://php.net/重置 http://php.net/reset
看起来简单的失败就可以解决问题:
switch ($storage_location) {
case 'cookie':
if (!headers_sent()) {
set_cookie();
break;
}
// falls through to next case
case 'session':
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)