流程控制

1、判断

判断用白话讲就是若是怎么样就怎么样要否则就怎么样。 php

用的是“if”这个前面咱们已经用过,这里咱们详细讲一下。完整的if是 html

1 if(expr1){//若是怎样
2 //code1  //就怎样
3 }elseif(expr2){ //要否则若是怎样
4 //code2 //就怎样
5 }else{ //要否则
6 //code3 //怎样
7 }

上面的代码中有三个条件,expr1,expr2,以及这两种之外,若是只有两种条件,能够把中间elseif去掉便可,若是有4种5种。。。只要继续写elseif便可,程序将从上到下去匹配expr直到为true。其中elseif也能够写成,else if中间有个空格,当code们只有一句时能够去掉大括号,可是,为了代码清晰,咱们仍是加上比较好,以避免出错。还有一点,当只有一个条件时,甚至能够不要else。下面例子将展现全部类型 express

01 //四个条件
02 $a=1.8;
03 $b=2;
04 if($a<0){
05 echo "$a<0";
06 }else if($a<1)
07 echo "$a<1";//我没有使用大括号
08 elseif($a<2){//我和上面的else if不一样
09 echo "$a<2";
10 }else{
11 echo "$a>=2";
12 }
13 //一个条件
14 if($a==$b){
15 echo '$a==$b';
16 }
17 //尽可能使用括号的忠告看看下面的代码 想一想结果是否和你想的同样
18 if($a>1)
19    $b=$a;
20    $a=2;
21    $b*=$a;
22 echo $b;

2、循环

循环比较多,分别介绍下。 数组

for:能够理解为,从一个值到另外一个值,一直作某件事。for的写法是 app

for (expr1; expr2; expr3)
    code

第一个表达式(expr1)在循环开始前无条件求值一次。 函数

expr2 在每次循环开始前求值。若是值为 TRUE,则继续循环,执行嵌套的循环语句。若是值为 FALSE,则终止循环。 ui

expr3 在每次循环以后被求值(执行)。 expr3不必定出如今小括号里面,也能够写在code里面,总之就是要让expr2有能变成false不然将陷入死循环简单例子 spa

1 for ($i = 1; $i <= 10; $i++) {
2     echo $i."\n";
3 }

while:能够理解为,当怎么样那么就一直怎么样。while的写法是 .net

while (expr)
    code
它告诉 PHP 只要 while 表达式的值为 TRUE 就重复执行嵌套中的循环语句。表达式的值在每次开始循环时检查,因此即便这个值在循环语句中改变了,语句也不会中止执行,直到本次循环结束。有时候若是 while 表达式的值一开始就是 FALSE,则循环语句一次都不会执行。这里要注意要给expr有false的机会,不然将陷入死循环。
1 $i=1;
2 while($i<=10){
3 echo $i."\n";
4 $i++;
5 }

do-while:这个基本上和while是同样的惟一的区别在,不管while判断是否为true,都会执行一次,循环体。do-while的写法 code

1 do{
2 //code
3 }while(expr);
1 //一样输出1到10
2 $i=1;
3 do{
4   echo $i."\n";
5   $i++;
6 }while($i<=10);

foreach:这个在前面有介绍过,就是遍历数组而且只能用于遍历数组。若是提供给foreach的不是数组,将会出现致命错误。Invalid argument supplied for foreach();foreach的写法有两种

foreach (array_expression as $value)
    code
foreach (array_expression as $key => $value)
    code
1 $arr = array(1,2,3,4);
2 foreach($arr as $v){
3   echo $v."\n";
4   $v = 0;
5   echo $v."\n";
6 }
7 var_dump($arr);
第一种方法遍历数组的值将值赋值给value,而第二种方法把值赋值给value把key赋值给key
注意:除非数组是被引用,foreach 所操做的是指定数组的一个拷贝,而不是该数组自己。因此被foreach操做的数组自己不发生变化。
switch:switch能够理解为不少个if。
01 switch ($i) {
02     case 0:
03         echo "i equals 0";
04         break;
05     case 1:
06         echo "i equals 1";
07         break;
08     case 2:
09         echo "i equals 2";
10         break;
11    default:
12    echo "i equals nothing";
13 }
为避免错误,理解 switch 是怎样执行的很是重要。switch 语句一行接一行地执行(其实是语句接语句)。开始时没有代码被执行。仅当一个 case 语句中的值和 switch 表达式的值匹配时 PHP 才开始执行语句,直到 switch 的程序段结束或者遇到第一个 break 语句为止。若是不在 case 的语句段最后写上 break的话,PHP 将继续执行下一个 case 中的语句段。另外若是一个case也没匹配上,将会执行default:;试试下面的代码
1 $i=0;
2 switch ($i) {
3     case 0:
4         echo "i equals 0";
5     case 1:
6         echo "i equals 1";
7     case 2:
8         echo "i equals 2";
9 }

这里若是 $i 等于 0,PHP 将执行全部的 print 语句!若是 $i 等于 1,PHP 将执行后面两条 print 语句。只有当 $i 等于 2 时,才会获得“预期”的结果——只显示“i equals 2”。因此,别忘了 break 语句就很重要(即便在某些状况下故意想避免提供它们时)。

在 switch 语句中条件只求值一次并用来和每一个 case 语句比较。在 elseif 语句中条件会再次求值。若是条件比一个简单的比较要复杂得多或者在一个不少次的循环中,那么用 switch 语句可能会快一些。

在一个 case 中的语句也能够为空,这样只不过将控制转移到了下一个 case 中的语句。

 break:break 结束当前 forforeachwhiledo-while 或者 switch 结构的执行。

break能够接受一个可选的数字参数来决定跳出几重循环。 试试下面的代码

1 for ($i = 1; $i <= 10; $i++) {
2     echo $i."\n";
3     if($i>4){
4        break;
5      }
6 }

continue:continue和break相似,只是他用来跳过本次循环。continue后面也能够接数字表示跳出几重循环。试试下面的代码,看看和你想的是否是同样吧

1 for ($i = 0; $i < 5; ++$i) {
2     if ($i == 2)
3         continue
4     print "$i\n";
5 }

3、其余

declare:directive 部分容许设定 declare 代码段的行为。其实这个不经常使用。至少在我工做中没用到,他可使用其余方式替代。不去了解也罢。

 return:即返回,用在函数中。

若是在一个函数中调用 return() 语句,将当即结束此函数的执行并将它的参数做为函数的值返回。return()也会终止 eval() 语句或者脚本文件的执行。

若是在全局范围中调用,则当前脚本文件停止运行。若是当前脚本文件是被 include() 的或者 require()的,则控制交回调用文件。此外,若是当前脚本是被 include() 的,则 return() 的值会被看成 include() 调用的返回值。若是在主脚本文件中调用 return(),则脚本停止运行。若是当前脚本文件是在 php.ini 中的配置选项 auto_prepend_file 或者 auto_append_file 所指定的,则此脚本文件停止运行。

注意: return() 是语言结构而不是函数,所以其参数没有必要用括号将其括起来。一般都不用括号,实际上也应该不用,这样能够下降 PHP 的负担。

试试下面的代码看看是否是和你想的同样

1 function zhuge(){
2   $i=0;
3  
4   return $i;
5   $i = 1;
6   echo $i."\n";
7 }
8 test();
9 var_dump(test);

goto:顾名思义即跳到某处执行,可是由于使用goto会使代码流程不混乱,因此咱们不推荐你们使用。也就不具体讲了。

另外提供了一些流程控制的替代语法,包括 ifwhileforforeach 和 switch。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;endwhile;endfor;endforeach; 以及endswitch;。 当看到别人写得代码出现这种形式的时候不要不认识便可,有时候html和php混合写得时候也能够用这种形式来使代码更加易读。

接下来是咱们从一开始到如今来第一次接触到两个或两个以上文件。

include和include_once二者都是包含并运行文件,惟一的区别是,include_once若是该文件中的代码已经被包含了,则不会再次包含。其实咱们能够这样想,包含了之后,两个php文件能够当作一个php文件,就这么简单。

require和require_once:和include实际上是同样的,惟一的区别是当包含失败时,include() 产生一个Warning而 require() 则致使一个致命错误,使脚本中止运行。其实也能够从字面上去理解,include仅仅是包含,require不只仅是包含仍是需求。

新建a.php,b.php两个文件分别写入以下代码而后运行b.php看看效果吧

1 <?php
2 function zhuge(){
3 echo "qaforcode.net";
4 }
5 ?>

 

1 <?php
2 include(dirname(__FILE__)."/a.php");
3 test();
4 ?>

过会儿试试下面两个代码,和上面同样分别写在两个文件中

1 <?php
2 echo "我是文件a!\n";
3 echo "include_once\n";include_once("b.php");
4 echo "include_once\n";include_once("b.php");
5 echo "include\n";include("b.php");
6 echo "文件a结束了\n";
7 ?>

 

1 <?php
2 echo "我是文件b\n";
3 ?>

而后运行文件a看看效果吧

本文固定连接: http://www.qaforcode.net/archives/243 | 猪哥每日一贴

相关文章
相关标签/搜索