PHP學習筆記(25)流程分支控制結構 (26)PHP實現簡單計算器

(25)流程分支控制結構

流程:控制程序執行順序

幾乎沒有程序是不需要流程控制的線性程序,除了HTML/CSS是沒有流程控制的,程序中需要與用戶相互交流,根據用戶輸入決定執行的序列,有循環的代碼反覆執行,這些都需要流程控制。所以在任何一門語言編程中都需要滿足程序結構化的一些程序設置結構

流程控制:

一、順序結構

二、分支結構(也叫條件結構也叫選擇結構):對於那些先選擇再執行的程序,構造合理的條件和分之流程,根據不同的流程選擇是適當的分之語句。適合帶有邏輯以及關係比較的一些條件判斷的計算。不同的需求,不同的時機來選擇者四種方式。每種分之結構都是通過相關的PHP語句完成的

1、單路分支:

               //條件bool,只有這兩種結果 true或false,  可以通過運算符的結合(> < == !=  & || ! )以及函數判斷 isset()等
 if(條件)              //有就執行。沒有繼續向下走
 執行下面一條語句     //執行一條語句不需要加{}
 
 if(條件)
 {
 代碼段;   //執行多條語句需要加{}
 代碼段;
 }

例如:$a=100;
 $b=50;
 
 if($a < $b){
  $t=$a;
$a=$b;
$b=$t;
 }


 var_dump($a > $b);

2、雙路分支:

使用else從句
 
   if(條件)
    執行一條語句
   else
    執行一條語句
 
       if(條件){
  一條或多條代碼
   }else{
  一條或多條代碼
   }

例如:$a=100;
$b=20;


if($a > $b){
echo "$a 大於 $b<br>";
}else{
echo "$a 小於 $b <br>";
}
echo "###############<br>";

3、多路分支:

可以使用 if  else if  和 switch case 
   //這是一種互斥的關係。也就是說每一種情況只能出現在下面唯一的一個條件裏,不可以重複,出現在第一個,就不能出現在第二個,即使第一個、第二個都滿足條件。
(1)   if(條件){
 
   }else  if(條件){        //否則。。。。。
 
   }else   if(條件){         //否則。。。。。
 
   }else  if(條件){           //否則。。。。。
 
   }else{
 
   }

例如:$hour=date("H"); //11   互斥的,例如5點啊,它既滿足下雨6點,也滿足小於9點,那豈不是重複了嘛?我們要記住因爲它是互斥的。只要進入第一個就不能進入第二個。
if($hour < 6){
echo "凌晨好";
}elseif($hour < 9){
echo "早上好";
}elseif($hour < 12){
echo "上午好";
}elseif($hour < 14){
echo "中午好";
}elseif( $hour < 17){
echo "下午好";
}elseif($hour < 19){
echo "傍晚好";
}elseif($hour < 22){
echo "晚上好";
}else{
echo "夜裏好";
}

 
 (2)   switch(變量){
  case 值:

代碼;
  break;
  case 值1:
  代碼;
  break;
  default:
  代碼;
 
    }

例如:$week=date("D");
$week=111;
//swinch(變量) 變量只用整型和字符串,顯然浮點型是不可以的,bool型不方便
//如果變量沒有匹配的值則執行default中的區域,需要就可以加上
//break 是退出switch, 用來設置多個值匹配執行同一段代碼

switch($week){
case 1:
case 11:
case 111:
case 1111:
case 11111:
echo "111111111111<br>";//以上數字都會被輸出“11111111111”,如果是1112,那麼,就會一直走到底部,輸出週末
break;
case "Mon":
echo  "星期一";
break;
case "Tue":
echo  "星期二";
break;
case "Wed":
echo  "星期三";
break;
case "Thu":
echo  "星期四";
break;
case "Fri":
echo  "星期五";
break;
default:
echo "週末";
}

當然我們用if   else也可以做出來。會很麻煩。例如,輸出一個學生成績的範圍60分~80分,因爲60分~80分不止20個數,還有60.5等等,所以範圍的用if   else   ,單個值的用switch。

4、嵌套分支:(嵌套最好不要超過五層

         if(){
  if(){
 
  }else{
  if(){
 
  }
  }
     }else{
  if(){
 
  }else{


 swicth(){
 
  }

 }
    }

例如;$sex=$_GET["sex"];


$age=$_GET["age"];


if($sex=="nan"){
if($age >= 60){
echo "這個男士已經退休".($age-60)."年了";
}else{
echo "這個男士還在工作,還有".(60-$age)."年才退休<br>";
}
}else{
if($age >= 66){
echo "這個女士已經退休".($age-55)."年了";
}else{
echo "這個女士還在工作,還有".(55-$age)."年才退休<br>";
}
}

三、循環結構

(26)PHP實現簡單計算器

<html>
<head>
<title>PHP實現簡單計算器</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<?php
$num1=true;
$num2=true;
$numa=true;
$numb=true;
$message="";
//單路分支
if(isset($_GET["sub"])){
if($_GET["num1"]==""){
$num1=false;
$message.="第一個數不能爲空";


}
if(!is_numeric($_GET["num1"])){             //判斷num1是不是數字類型,是就返回真,不是就返回假。
$numa=false;
$message.="第一個數不是數字";
}


if($_GET["num2"]==""){
$num2=false;
$message.="第二個數不能爲空";


}
if(!is_numeric($_GET["num2"])){      //判斷num2是不是數字類型是就返回真,不是就返回假。
$numb=false;
$message.="第二個數不是數字";
}



if($num1 && $num2 && $numa && $numb) {
$sum=0;
//多路分支switch
switch($_GET["ysf"]){
case "+":
$sum=$_GET["num1"]+$_GET["num2"];
break;
case "-":
$sum=$_GET["num1"]-$_GET["num2"];
break;
case "x":
$sum=$_GET["num1"]*$_GET["num2"];
break;
case "/":
$sum=$_GET["num1"]/$_GET["num2"];
break;
case "%":
$sum=$_GET["num1"]%$_GET["num2"];
break;
}
}
}
?>


<body>
<table align="center" border="1" width="500">
<caption><h1>計算器</h1></caption>
<form action="jsq.php">
<tr>
<td>
<input type="text" size="5" name="num1" value="<?php echo $_GET["num1"] ?>" >  //爲了運算後,原數據還保留在輸入框中,我們加上value值。
</td>
<td>
<select name="ysf">
<option value="+" <?php if($_GET["ysf"]=="+") echo "selected" ?>>+</option>
<option value="-" <?php if($_GET["ysf"]=="-") echo "selected" ?>>-</option>
<option value="x" <?php echo $_GET["ysf"]=="x"?"selected":"" ?>>x</option>
<option value="/" <?php echo $_GET["ysf"]=="/"?"selected":"" ?>>/</option>
<option value="%" <?php echo $_GET["ysf"]=="%"?"selected":"" ?>>%</option>
</select>
</td>
<td>
<input type="text" size="5" name="num2" value="<?php echo $_GET["num2"] ?>">
</td>
<td>
<input type="submit" name="sub" value="計算">
</td>
</tr>


<?php
if(isset($_GET["sub"])){


echo '<tr><td colspan="5">';
if($num1 && $num1 && $numa && $numb){
echo "結果:".$_GET["num1"]." ".$_GET["ysf"]." ".$_GET["num2"]." = ".$sum;
}else{
echo $message;
}
echo '</td></tr>';
}
?>

</form>
</table>


</body>
</html>
















































































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章