文章来自:zhouxiaoshuai
流程控制:
题:列出三种PHP数组循环操作的语法,并说明各种循环的区别;
考点:
- 遍历数组的三种方式以及各自的区别;
- 分支控制结构流程控制;
题:列出三种PHP数组循环操作的语法,并说明各种循环的区别;
解答:循环数组的三种方式:
-
for()
循环(while()
,do whlie循环
); -
foreach()
循环; -
while()
,list()
,each()
组合循环;
区别:
-
for()
循环只能遍历索引数组; -
foreach()
循环既可以遍历索引数组,又可以遍历关联数组; -
while()
,list()
,each()
组合循环同样既可以循环索引数组,又可以遍历关联数组;
foreach()
和while()
, list()
, each()
组合循环的区别:
- 组合使用
while()
,list()
,each()
组合遍历数组,不会对数组进行reset操作;(reset:重置数组指针); - 使用
foreach()
遍历数组,会对数组进行reset操作,将数组指针重置;
分支结构流程控制:
-
if.....elseif.....
:
- 在elseif语句中只能有一个表达式为
true
,即在elseif
语句中只能有一个语句块被执行,多个elseif从句是排斥的关系; - 使用
elseif
有一个基本原则:总是把优先级范围小的条件放在前面处理(可能性较大的表达式尽量写在前面);
-
switch...case...
:
- 和
if
不同的是,switch
后面的控制表达式的数据类型只能是: 整型,浮点型, 字符串; -
break
和continue
的区别:
-- break 用来跳出目前执行的循环,并不再继续执行循环了。
-- continue 立即停止目前执行循环,并回到循环的条件判断处,继续下一个循环。
continue
语句作用到switch
的作用类似于break
;跳出switch
外的循环,可以使用continue2
;
注意:switch...case...
本身会生成跳转表(索引表),直接跳转到对应的case
中,效率会高点;
解题方法:
理解循环内部机制,更易于极易foreach
的reset特性;分之结构中,理解switch...case...的底层跳转表更易于理解效率高!
试题:
'PHP中如何优化多个if...elseif语句的情况?'
1. 表达式可能性大的,放在判断前面;(表达式可能性越大,越放在前面);
2. 如果判断的内容是 整型,浮点型和字符串三种数据类型,并且内容较为负责的话,则可以使用switch...case...会有效率的提升;