第十二节:控制结构foreachbreakcontinueswitch

foreach 值得注意的是两个例子

一.是可变变量  可以很方便的遍历POST数组

 1 <?php
 2 $arr=array('banana','orange','appale','pear','grape');
 3 foreach($arr as $value):
 4 $$value=$value;
 5 //var_dump($$value);
 6 endforeach;
 7 $_POST=array('name'=>'Tom','password'=>'123','email'=>'2323@qq.com');
 8 foreach($_POST as $key=>$value):
 9 $$key=$value;
10 endforeach;
11 echo $name.$passwprd.$email;
12 ?>

二 是引用操作符变量数组

 1 <?php
 2 $fruit=array('orange','apple','pear','grape');
 3 foreach($fruit as &$value):
 4 $value=strtoupper($value);
 5 endforeach;
 6 //此处注意 因为使用了引用操作符 而$value随着数组指针移动其实到了 最后 $value就是数组最后一个值的变量,
 7 //如果它改变数组最好一个值也会改变所以,为了避免误操作最好
 8 unset($value);//目前理解 这个unset()语句(他不是函数) 就是释放变量和内存的关联
 9 $value='car';
10 var_dump($fruit);
11 ?>

break和continue定义就不说了 注意一点 他们可以跳出多重循环

break的例子

 1 <?php
 2 $i=0;
 3 while(++$i):
 4    switch($i):
 5    case 5:
 6       $color='red';
 7       break 1;      
 8    case 10;
 9       break 2;
10    default:
11       unset($color);    
12    endswitch;
13 echo <<<EOT
14 <font color="$color">10000</font><br/>
15 EOT;
16 endwhile;
17 ?>

效果如图:

在手册中关于break和continue 还提到了一个特殊的遍历数组方式

 1 <?php
 2 $arr=array('red','blue','yellow','black');
 3 //将数值指针复位 指向第一个元素
 4 reset($arr);
 5 //list()将对面数值的键值分别付给括号中的变量,each将数值当期指针所指向的元素 键值和键名作为一个数组返回
 6 while(list($key,$value)=each($arr)):
 7   if($value=='red'):
 8    $color='red';
 9    else:
10    $color='black';
11   endif;
12 echo "<font color=\"$color\">$value</font><br/>";
13 endwhile;
14 ?>

 关于switch,看这个例子

 1 <?php
 2 switch ($i=1):
 3 case 2:
 4  echo 2;
 5  break ;
 6 case 1:
 7   echo 1;
 8 case 3:
 9   echo 3;
10 endswitch;
11 ?>

输出结果是1和3 为什么会这样呢?这就牵扯到了switch的执行方式,

switch是一行接1行的执行。开始没有代码执行。仅当一个case语句中的值和switch表达式的值匹配时PHP才开始执行语句,直到遇到第一个break或continue,否则他讲不在会匹配case,而直接执行下面所有case中的语句。甚至包括defualt的内容。(其实是有点不智能,浪费代码)

另外 case表达式只能是简单的类型表达式,即整型和浮点型以及字符串,不能是数组和对象。

原文地址:https://www.cnblogs.com/saw2012/p/2880381.html