PHP面试题集锦二

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、

转载于:https://www.cnblogs.com/atblog/p/4768817.html

你可能感兴趣的:(PHP面试题集锦二)