1、break, continue, goto, return, exit 跳转循环中的区别:
❶、break:
实例一:
1 php 2 $arr = []; 3 for ($i = 1; $i <= 3; $i++) { 4 for ($j = 1; $j <= 3; $j++) { 5 $sum = $i * $j; 6 if ($sum > 3) { 7 break; // break 1; 8 } 9 $arr[$i][$j] = $sum; 10 } 11 } 12 print_r($arr); 13 14 运行结果: 15 Array 16 ( 17 [1] => Array 18 ( 19 [1] => 1 20 [2] => 2 21 [3] => 3 22 ) 23 24 [2] => Array 25 ( 26 [1] => 2 27 ) 28 29 [3] => Array 30 ( 31 [1] => 3 32 ) 33 34 )
实例二:
1 php 2 $arr = []; 3 for ($i = 1; $i <= 3; $i++) { 4 for ($j = 1; $j <= 3; $j++) { 5 $sum = $i * $j; 6 if ($sum > 3) { 7 break 2; 8 } 9 $arr[$i][$j] = $sum; 10 } 11 } 12 print_r($arr); 13 14 运行结果: 15 Array 16 ( 17 [1] => Array 18 ( 19 [1] => 1 20 [2] => 2 21 [3] => 3 22 ) 23 24 [2] => Array 25 ( 26 [1] => 2 27 ) 28 29 )
❷、continue:
实例一:
1 php 2 $arr = []; 3 for ($i = 1; $i <= 10; $i++) { 4 if ($i % 2 == 0) { 5 continue; 6 } 7 $arr[$i] = $i; 8 } 9 print_r($arr); 10 11 运行结果: 12 Array 13 ( 14 [1] => 1 15 [3] => 3 16 [5] => 5 17 [7] => 7 18 [9] => 9 19 )
实例二:
❸、goto:goto 操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。可以跳出循环或者 switch,通常的用法是用 goto 代替多层的 break,操作符仅在 PHP 5.3 及以上版本有效
实例一:
1 php 2 $arr = []; 3 for ($i = 1; $i <= 10; $i++) { 4 if (sqrt($i) > 2) { 5 $arr[$i] = $i; 6 goto a; 7 } 8 } 9 a: 10 print_r($arr); 11 12 运行结果: 13 Array 14 ( 15 [5] => 5 16 )
实例二:
1 php 2 goto tag; 3 echo 'Hello World!'; 4 5 tag: 6 echo 'This is a `tag`' . PHP_EOL; 7 8 运行结果: 9 This is a `tag`
实例三:
1 php 2 for ($i = 0, $j = 50; $i < 100; $i++) { 3 while ($j--) { 4 if ($j == 25) { 5 goto end; 6 } 7 } 8 } 9 echo "i = $i"; 10 11 end: 12 echo "j = 25" . PHP_EOL; 13 14 运行结果: 15 j = 25
实例四:迭代器操作
1 php 2 $arr = ['mac', 'pro', 'app']; 3 $pos = 0; 4 5 aIterator: { 6 $i = 0; 7 echo $arr[$pos] . PHP_EOL; 8 9 cIterator: { 10 echo $arr[$pos][$i] . PHP_EOL; 11 if (!isset($arr[$pos][++$i])) { 12 goto bIterator; 13 } 14 goto cIterator; 15 } 16 17 bIterator: { 18 if (isset($arr[++$pos])) { 19 goto aIterator; 20 } 21 } 22 } 23 24 运行结果: 25 mac 26 m 27 a 28 c 29 pro 30 p 31 r 32 o 33 app 34 a 35 p 36 p
❹、return:
1 php 2 $arr = []; 3 for ($i = 1; $i <= 10; $i++) { 4 if (sqrt($i) > 2) { 5 $arr[$i] = $i; 6 } else { 7 //return; 8 } 9 } 10 print_r($arr); 11 12 运行结果: 13 Array 14 ( 15 [5] => 5 16 [6] => 6 17 [7] => 7 18 [8] => 8 19 [9] => 9 20 [10] => 10 21 ) 22 23 php 24 $arr = []; 25 for ($i = 1; $i <= 10; $i++) { 26 if (sqrt($i) > 2) { 27 $arr[$i] = $i; 28 } else { 29 return; 30 } 31 } 32 print_r($arr); // 什么也没输出
当循环满足循环的临界条件时就自己退出了,所以什么也没输出
❺、exit:
1 php 2 $arr = []; 3 for ($i = 1; $i <= 10; $i++) { 4 if (sqrt($i) > 2) { 5 $arr[$i] = $i; 6 } else { 7 exit; 8 } 9 } 10 print_r($arr); // 什么也没输出,同 return
❻、die:
1 php 2 $arr = []; 3 for ($i = 1; $i <= 10; $i++) { 4 if (sqrt($i) > 2) { 5 $arr[$i] = $i; 6 } else { 7 die; 8 } 9 } 10 print_r($arr); // 什么也没输出,同 return
2、