5.流程控制
流程控制
请列出3种PHP数组循环操作的语法,并注明各种循环的区别?
for循环
foreach循环
while ,list(),each()组合循环
区别
for循环只能遍历索引数组
foreach可以遍历索引和关联数组
联合使用while ,list(),each()循环同样可以遍历索引和关联数组
while ,list(),each()组合不会reset()
foreach遍历会对数组进行reset()操作
reset()数组指针操作。
如果没有reset()操作,遍历数组就只是一个片段
延伸:分支结构
If.....elseif
在elseif语句中,只能有一个表达式为true,即在else语句中,只能有一个语句块被执行,多个elseif从句是排斥关系。
使用else语句有一个基本原则,总是把优先范围小的条件放在前面处理。
If(){
}elseif(){
}elseif(){
}else{
}
switch...case...
和if不同的是,switch后面的控制表达式的数据类型只能是整型,浮点型或者字符串
switch($var){
case...;
break;
case...;
break;
case...;
break;
deault:...;
break;
}
1.和if不同的是,switch后面的控制表达式的数据类型只能是整型,浮点型或者字符串
2.continue的语句作用到switch的作用类似于break
switch($var){
case...;
continue;
case...;
break;
case...;
break;
deault:...;
break;
}
3.跳出switch外的循环,可以使用continue2
for(){
switch($var){
case...;
continue;->continue2
case...;
break;
case...;
break;
deault:...;
break;
}
}
4.switch...case会生成跳转表,直接跳转到对应case
5.如果条件复杂,并且在一个很多次循环中,switch效率更高一些。因为switch会生成表,所以效率高。
解题方法
理解循环内部机制,更易于记忆foreach的reset特性,分支结构中,理解了switch...case的执行步骤也就不难理解为什么效率高了。
真题
php中如何优化多个if...elseif语句的情况
1.表达式范围大的往前放
2.如果判断复杂,值是整型,浮点型和字符串,使用switch。