• 第十二节:控制结构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表达式只能是简单的类型表达式,即整型和浮点型以及字符串,不能是数组和对象。

  • 相关阅读:
    java方法名的重载
    数据库ifnull方法
    java类的方法
    java属性的默认值
    sublime使用攻略
    1046 Shortest Distance
    1047 Student List for Course
    1048 Find Coins
    1049 Counting Ones
    1050 String Subtraction
  • 原文地址:https://www.cnblogs.com/saw2012/p/2880381.html
Copyright © 2020-2023  润新知