Bài trước chúng ta đã tìm hiểu vòng lặp cuối cùng đó là vòng lặp foreach trong php, vậy thì trong bài này chúng ta sẽ tìm hiểu một số câu lệnh dừng chương trình vòng lặp và lệnh nhảy tới một vị trí nào đó trong file PHP.
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.
Nội dung chúng ta gồm ó các phần như sau:
- Câu lệnh Break
- Câu lệnh Continue
- Câu lệnh Goto
- Câu lệnh Die & Exit
1. Câu lệnh break
Lệnh break
thường được dùng để thoát khỏi vòng lặp
cho dù vòng lặp vẫn chưa kết thúc.
Ví dụ:
Bài viết này được đăng tại [free tuts .net]
for [$i = 1; $iThe above example will output:
Example #2
goto
loop example
The above example will output:
Example #3 This will not work
The above example will output:
Fatal error: 'goto' into loop or switch statement is disallowed in script on line 2devbyjesus at example dot com ¶
7 months ago
the problem of goto is that it is a good feature but in a large codebase it reduces the readability of the code . that's all . i try to not use it to think about the person who is going to read after me .
Lollo ¶
1 year ago
You should mention the label can't be a variable
firstbitrix at ya dot ru ¶
6 months ago
I found a good way to use goto for walking through a foreach iteration one another time in order not to walk through whole array once again or not to use special and mostly complex if...else constructions.
But don't forget to make an exit from the goto loop if the iteration of rewalking reaches to many attemptions.
Brief example:
foreach [$fooArray as $foo] {
$attemptionLimit = 0;
restartIteration:
if [++$attemptionLimit > 10] {
continue;
}
$result = $foo->doSomething[];
if [!$result] {
$foo->doSomethingElse[$attemptionLimit];
goto restartIteration;
} else {
echo "Done!";
}
}
PHP_is_still_great ¶
1 year ago
// goto is STILL a good feature if you know how to use it.
// Just don't use it in loops.
// Example:
$sql = "DELETE FROM sometable WHERE id=?;";
$stmt = $conn->prepare[$sql];
if [!$stmt] {
echo "ERR prepare_fail";
goto End;
}
$bind = $stmt->bind_param['i', $id];
if [!$bind] {
echo "ERR bind_fail";
goto End;
}
$exec = $stmt->execute[];
if [!$exec] {
echo "ERR exec_fail";
goto End;
}
if [isset[$_POST['file']]] {
$file = "../" . $_POST['file'];
if [is_file[$file]] { unlink[$file]; }
}
echo "OK delete_success" ;
End:
$stmt->close[];
$conn->close[];
exit;
/*
instead of repeating the $stmt->close[] and $conn->close[],
we save a few lines by adding a goto and just close everything at the end.
*/
instatiendaweb at gmail dot com ¶
1 year ago
$array = array[];
for [$i = 0; $i