Ist es möglich ? Oder soll ich die Schleife beenden und eine andere beginnen?
foreach($array as $i)
{
if (something)
// Go back
}
Antworten:
1 für die Antwort № 1Es ist. Aber nicht bei foreach & ohne die Schleife zu verlassen. Hier "ist eine andere Alternative, für ein gutes Maß.
for ($i = 0; $i < count($array); $i++) {
if (condition) {
$i = 0;
}
do_stuff_with($array[$i]);
}
1 für die Antwort № 2
Erstellen Sie eine Funktion und übergeben Sie das Array. Wenn etwas in der Schleife passiert, rufen Sie die Funktion erneut mit dem Hauptarray auf. Versuche dies -
function check_loop($array) {
foreach($array as $val) {
if (something)
check_loop($array);
}
}
check_loop($array);
1 für die Antwort № 3
Es wird nicht vorgeschlagen, aber Sie können goto verwenden:
cIterator: {
foreach($array as $i)
{
if (something)
goto cIterator;
}
}
1 für die Antwort № 4
Sie können current (), next () und prev () verwenden, um das Array zu durchlaufen und den internen Arrayzeiger hin und her zu bewegen:
$items = array("apple", "box", "cat");
while($item=current($items)) {
print_r($item);
if (needToGoBack($item))
// Go to previous array item
$item = reset($items);
} else {
// Continue to next
$item = next($items);
}
}