遍历数组的三种方式:
1、for循环遍历
只能遍历索引数组
2、foreach循环遍历
能遍历索引和关联数组,会在遍历之前对数组进行reset()操作
3、list()、each()、while
可以遍历索引和关联数组,且不会进行reset()操作,所以如果在list()、each、while操作前如果有修改数组指针的操作,使用list()、each()、while循环数组会导致只能遍历一部分的情况。
具体例子如下
$array = [ 'a', 'b', 'c'];
next($array);
print_r( each( $array));//值为 value => b,因为上方next函数改变了数组的指针
if elseif
在使用if elseif判断的时候,把可能性大的条件放前面,可以减少判断次数
//把可能性高的条件放在前面,减少判断次数
if($exp1){
....
}elseif($exp2){
...
}else{
...
}
switch case
switch判断中的变量只能是整形、浮点数、字符串
switch case 会生成跳转表(底层c语言原理),直接跳转到对应的case,不会一层一层的判断,拿到switch中的值就跳到对应的case中。
//$exp的值只能是整形、浮点数、字符串
switch( $exp){
case 1:
break;
case 3.3:
break;
case 'string':
break;
default :
break;
}
面试题
问:php中如何优化多个if elseif语句的情况?
答:将可能性高的条件尽量的放在if elseif条件的前列,如果判断条件的值是整形、浮点、字符串则,而且判断的内容是比较复杂的内容,则可以使用switch来进行判断会相比if elseif带来一个效率上的提升