遍历数组的三种方法及区别
- for
for($i=0;$i<count($arr),$i++){ echo $arr[$i]; } - foreach
foreach($arr as $key=>$value){ echo $key; echo $value; } - while list each
reset($arr); while(list($key,$value) = each($arr)){ echo $key; echo $value; }
区别:
for遍历循环索引数据,foreach跟while/list/each可以遍历索引、关联数组。each()实质就是使用返回当前指针的值current(),指针下移 next() ,当指钟超出数组范围,返回false。下一次遍历循环需要reset()把指针指向数组第一个元素。 在php7.2.X each已被废弃,建议做foreach
分支结构
if elseif ······
一层层判断下来,只有一个代码块执行,排斥性。尽量把可能性较大的条件放前面。
if($status > 1){
······
}elseif( 0<$status<1){
······
}else{
·····
}switch
效率比if elseif高,因为直接生成索引,不需要一步步判断
case值可使用整型、浮点型、字符串
常见bug
1、switch非严格匹配,自动转换类型
switch($str){
case 'hello':
echo 'hello';
break
case 0 :
echo 0;
break;
default:
echo 'haha';
}
//假如$str = 0 ;最后输出的为hello,而不是02、case 表达式的值,而不是判断表达式是否成立
swithc($num){
case $num >= 0:
echo 0;
break;
case $num >10:
echo 1:
break;
default:
echo 2;
}
//$a=0时,输出的结果为1.因为第一个表达式为true,true就是1。第二表达式false 就是0