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:实际上只是一个运算符,和其他语言一样,PHP 中也不鼓励滥用 goto,滥用 goto 会导致程序的可读性严重下降。goto 的作用是将程序的执行从当前位置跳转到其他任意位置,goto 本身并没有要结束的循环的作用,但其跳转位置的作用使得其可以作为跳出循环使用。但 PHP5.3 及以上版本停止了对 goto 的支持,所以应该尽量避免使用 goto

 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 )

?、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、

时间: 2024-10-12 21:59:45

PHP面试题集锦二的相关文章

web前端面试题集锦二

1.为什么要初始化CSS样式? 答案:因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异. 当然,初始化样式会对SEO有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化. 2.浮动元素引起的问题? 答案:a. 父元素的高度无法被撑开,影响与父元素同级的元素 b. 与浮动元素同级的非浮动元素会跟随其后 c. 若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构 3.line-height三种赋值方式有

经典的Java基础面试题集锦

经典的Java基础面试题集锦,欢迎收藏和分享 一.面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码的可理解性. 面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会逐个分析这些特性. 封装 封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内部的数据.在Java当中,有3种修饰符:publ

2019阿里巴巴面试题集锦(有答案哦),收藏!

来源商业新知网,原标题:[收藏]2019阿里巴巴面试题集锦(含答案) [导读] 本文是阿里巴巴 2019 面试题集锦(含答案),是阿里巴巴自身技术专家们结合多年的工作.面试经验总结提炼而成的面试真题.通过这些面试题,还可以间接地了解技术大牛们出题思路与考察要点. 想要入职大厂可谓是千军万马过独木桥. 要通过层层考验, 刷题 肯定是必不可少的. 为帮助开发者们提升面试技能.有机会入职阿里,云栖社区特别制作了这个专辑—— 阿里巴巴资深技术专家们结合多年的工作.面试经验总结提炼而成的面试真题 这一次整

剑指offer 面试题(二维数组中的查找) (2)

面试题: 二维数组中的查找 /* 题目:   在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成 一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该数. */ ps:(其实前段时间我就做过这道题,今天看到了,觉得还是有点生,那就再来一次吧) 题目分析:  在分析这个问题的时候,我们首先要看,在一个二维数组中查找一个数字是否存在,那么很多人就觉得 简单了,遍历二维数组与所需要查找的数字进行比较不就完了!  不可否认的是你说的是可行的,可是

【剑指Offer面试题】二维数组中的查找

下决心AC所有剑指offer面试题. 九度OJ面试题地址:http://ac.jobdu.com/hhtproblems.php 书籍:何海涛--<剑指Offer:名企面试官精讲典型编程题> 对于面试题,面试官往往更希望我们能提出优化方法,这样更能体现我们的思维能力以及传说中的"内功".所以做剑指offer要着重训练这方面,多总结多细究,总是有好处的.加油~ 二维数组中的查找 时间限制:1 秒内存限制:32 兆 特殊判题:否提交:19005解决:3642 题目描述: 在一个

Linux面试题集锦

1.给你一个rpm包,查询是否安装,安装了如何删除 rpm -qa rsync  查看是否安装rsync包 rpm -e  rsync 卸载rsync包  --nodeps   忽略依赖关系 2. 查看磁盘空间 df -h 3.443端口是什么服务 cat /etc/service https 4. 有一些文件,如何把文件的扩展名.txt改为.html 方法1: rename .txt  .html   *.txt 方法2: find . -type f-name "*.txt" -p

Web前端面试题集锦

Web前端面试题集锦 前端开发面试知识点大纲: 注意 转载须保留原文链接(http://www.cnblogs.com/wzhiq896/p/5927180.html )作者:wangwen896 HTML&CSS: 对Web标准的理解.浏览器内核差异.兼容性.hack.CSS基本功:布局.盒子模型.选择器优先级及使用.HTML5.CSS3.移动端适应. JavaScript: 数据类型.面向对象.继承.闭包.插件.作用域.跨域.原型链.模块化.自定义事件.内存泄漏.事件机制.异步装载回调.模板

LeetCode解题源代码链接集锦二

15.Sort List--链表在O(nlogn),常数空间内完成排序 关键点:中间分裂链表,采用双指针归并排序     中间分裂链表的方法:快慢指针,快指针走两步,这样就可以找到中间的了 C++:http://blog.csdn.net/jiadebin890724/article/details/21334059 Java:http://blog.csdn.net/worldwindjp/article/details/18986737 LeetCode解题源代码链接集锦二,布布扣,bubu

C/C++面试题集锦(一)

*/--> C/C++面试题集锦(一) 在类的头文件中进行声明然后在定义文件中实现有什么意义? 一方面使类的实现只编译一次,提高编译效率:另一方面可以实现类的接口和实现的分离,利于维护 在类的声明内部实现成员函数的函数体 这种成员函数自动成为内联函数,这种函数在编译阶段只要是用到的地方都会进行代码替换 成员函数通过什么来区分不同的对象 通过普通成员函数隐含的this指针来区分不同对象.一个类的不同对象之间代码是共享的,只有数据是不同的,this指针指向这些不同的数据内存位置的首地址. 拷贝构造函