PHP 的流程控制

PHP的流程控制主要分为三大类 分别是 顺序结构 分支结构 循环结构

其中顺序结构就是没有认为控制的流程 根据代码从上往下运行 比较简单

<?php 
//一个简单的顺序结构
$a=10;
$b=20;
$c=$a+$b;
?>

分支结构 的特点就是根据条件判断出的不同的结果 进行不同的选择 例如 if-else语句

<?php
//分支结构 简单的if 语句  起一个判断过滤的作用 
$age=19;
if($age>18){        //$age>18 条件语句 返回boolean值
echo $age;          // 执行语句 
}
//分支结构  标准的if语句  必须有一个执行代码块
if($age>18){        //判断条件语句 
echo %age;          //如果条件为真 执行紧跟if的代码
 }else{ 
    echo "年龄不足18岁";    //如果条件为false 执行else后的代码 总会执行一个代码块
    }
//分支结构  复杂的if语句  有多个条件语句  
if($age>60)               //条件语句1 如果为false继续向下
{
    echo "老年人";
}else if($age>30&&$age<60){    //条件 语句2 如果为true 执行后面的代码块
    echo "中年人";
 }else (&age<30){              //前面所有的条件语句都为false时 执行else后面的代码块
    echo "成年人"
    }
?>

当条件很多并且条件很明确为纯粹的常量时 if-else 就会显得比较臃肿  这里以 输入1-7 输出对应星期几为例

<?php
$a = mt_rand(0,8);  //随机产生代表星期几的1-7
switch($a){          //判断条件是个很纯碎的变量  很明确 
case 1:              //如果变量$a为一  执行case1 后面的代码块
    {   
       echo "星期一";   
       break;          //break的作用是跳出整个循环不再进行case2 如果没有break 会继续向下执行
   }
case 2:
    {   
       echo "星期二";
       break;
   }
case 3:
    {   
       echo "星期三";
       break;
   }
case 4:
    {   
       echo "星期四";
       break;
   }
case 5:
    {   
       echo "星期五";
       break;
   }
case 6:
    {   
       echo "星期六";
       break;
   }
default:             //如果前面的case都没有匹配到变量的值 执行default后面的代码(可省略)
    {   
       echo "星期日";
       break;
   }
}
?>

 if与else 的区别在于 1 if的判断条件可以是表达式 也可以是 变量 而switch的判断条件只能为常量并且通常连续 2 if分支的条件从第一个开始判断 按顺序向下判断 而switch的逻辑不同 直接进入相匹配的case     3  if只能执行一个代码块 而 swirch可以通过不适用break的方式 执行多个代码块

循环结构用来执行循坏代码 以 计算从1到100所有的立方和为例

<?php
$sum =0;
for($a=1;$a<=100;$a++)       
    {
        $sum = $a*$a*$a+$sum;
}
echo $sum;     
echo $a;     //循环结束后可以在在外部使用别量 值为第一个不满足判断条件的值
/* $a=1 初始化条件 整个循环只执行一次 可以初始化多个变量 用 , 隔开
*  $a<=100 判断条件 如果为true 执行循环体  如果不满足 直接跳出循环体 
*  $a++   条件变更 循环结构不吃为死循环的关键  通过条件变更 使变量不满足判断条件 跳出循环 
*  for()内的表达式通过  ; 分开 
*/
?>

上面描述的是for循环 在变量规律性不强的情况下 还有一种while循环  本质与for循环没有区别 以从1 加到100为例 :

<?php
$a = 1;
$sum =0;
while($a<=100){            //判断条件
    $sum+=$a;       //循环体
    $a++;                  //变更语句
}
echo $sum;
?>

本质上与for循环没什么区别  还有一种循环 do..while 无论如何都会被执行一次的时候使用

<?php
do{
      循环体(包括变更语句)
}while(判断语句);   //()小括号没有结束语句的能力 所以需要在()后面加上  ; 

除了上面三种循环 还有一只一种PHP专门针对数组设定的循环结构  foreach 遍历的循环模式 

<?php
  $arr1 = array('name ' =>'张三' ,'age' => 18 , 'gender' => '男' );    //第二层数组 关联数组 
  $arr2 = array('name ' =>'李四' ,'age' => 17 , 'gender' => '女' );
  $arr3 = array('name ' =>'王五' ,'age' => 19 , 'gender' => '男' );
  $info =array($arr1,$arr2,$arr3);   //第一层数组  索引数组  必须定义在第二维度数组后面
  
  for ($a=0;$a<3;$a++){              //第一维数组 通常通过索引遍历
    
    foreach ($info[$a] as $key => $value) {    //第二层数组 通过foreach遍历 as 不能省略 
      echo "我的".$key."是".$value."</br>";    //处理便利出来的数据
    }
  }

?>

 循环控制 continue 与 break 两者的区别在于 continue 跳出本次循环 继续下次循环 break是直接终止所有循环 二者后面都可以加上数字 表示跳出循环的层数 一般不会超过3层  continue2; break2;

题目一  保存100个 斐波纳挈数列数组 斐波纳挈数列 ; 第一个和第二个数为1 后面的数字为前面两个数字的和 如 1,1,2,3,,5

<?php
  $arr =array();
  $arr[0]=1;
  $arr[1]=1;
  for($a=2;$a<=99;$a++){
  	$arr[] = $arr[$a-1]+$arr[$a-2];
  }
?>

 题目二 求出100以内所有的质数(只能被自己和1整除)

<?php
for($a=2;$a<=100;$a++){
	for($b=2;$b<$a;$b++){
		if($a%$b!=0){
			continue;
		}else{
			break;
		}
	}
	if($a==$b){
		echo $a;
	}
}
?>

 题目三 : 利用for循环,增加一个拥有10个数组元素的二维数组 ,第二维对应的信息是stu_no(学号) stu_age()年龄 stu_name()名字 stu_major()专业 对应的值是学号(no+顺序数值) 年龄(18+顺序数值) 名字 (name+顺序数值) 专业(major+顺序数值) 然后再利用二维数组 输出所有学生的信息

<?php
	$ingo = array();
	//通过for循环 建立二维数组 
	for($a=0;$a<=9;$a++){
		$arr=array('stu_no'=>'no'.$a,'stu_name'=>'name '.$a,'stu_major'=>'major'.$a);
		$info[] = $arr; 
	}
	//第一层数组 通过索引找到对应元素 第二层数组 通过遍历 比哪里出索引与值
	for($b=0;$b<=9;$b++){
		$arr1=$info[$b];
		foreach ($arr1 as $key => $value) {
		echo  "my".$key."is   ".$value."<br/>";
		}
	}
?>

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值