PHP流程控制考察点
php遍历数组的三种方法及各自的区别
php遍历数组的方式主要有三种:
- for循环
- foreach循环
- while、list()、each()组合循环
其中: - for循环只能遍历索引数组,foreach可以遍历索引和关联数组,联合使用list(),each()和while循环同样可以遍历索引和关联数组。
- while、list()、each()组合不会reset(),也就是不会把指针清零。
- foreach()遍历会对数组进行reset()操作
while、list()、each()组合
这三个要组合使用才能完成对数组的遍历
each()
返回当前元素的键名和键值,并将内部指针向前移动
该元素的键名和键值会被返回带有四个元素的数组中。两个元素(1 和 Value)包含键值,两个元素(0 和 Key)包含键名。
<?php
$people = array("Bill", "Steve", "Mark", "David");
print_r (each($people));// Array ( [1] => Bill [value] => Bill [0] => 0 [key] => 0 )
?>
list()
list() 函数用于在一次操作中给一组变量赋值。
该函数只用于数字索引的数组,且假定数字索引从 0 开始。如果存在不是数字索引的 则跳过。相当于list里面的第n个参数对应array里面数字索引为n-1的元素
list()
与each()
配合
有了上面的认识,就可以将list()和each()进行组合:
<?php
list($key,$value) = each(my_array);//这样就将key value 取到了
list()
each()
while
组合
注意到each()会将指针指向下一个元素,那么反复执行each()就会遍历到每一个元素,当each()指向最后时,返回false,因此可以配合while使用
<?php
while(list($key,$value) = each(my_array)){
echo $key . "=>" . $value;
}
php分支考点
if...elseif...
尽量把可能性大的条件写在前面。
switch...case...
- 和if不同,switch后面的控制表达式的数据类型只能是整形、符点类型或字符串
- continue语句作用在switch里面,相当于break。如果想让continue跳出switch外面的循环,可以使用 continue2
- 由于switch...case...会生成一个跳转表,直接跳转到case里,所以在执行复杂判断时使用switch case会大大提升效率