国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP中for循環(huán)語句一些不常用的方法

2024-05-04 23:07:13
字體:
供稿:網(wǎng)友

for語句可以說是PHP(同時也是多種語言)的循環(huán)控制部份最基本的一個語句了,for語句的執(zhí)行規(guī)律和基礎(chǔ)用法在這里就不多說,可以參見PHP手冊for語句部分.PHP手冊中對它的語法定義如下:

for 循環(huán)語句是 PHP 語言中最復(fù)雜的一種循環(huán)語句.它的語法如下:

for (expr1; expr2; expr3)statement

實例代碼如下:

  1. <html> 
  2. <body> 
  3. <?phpfor ($i=1; $i<=5; $i++){  echo $i ;}?> 
  4. </body> 
  5. ?</html> 

該實例返回的顯示結(jié)果是:12345

下面說說for語句幾種有用的變型.

1、無限循環(huán)

首先是人盡皆知的無限循環(huán)(亦可稱“死循環(huán)”).由于空表達式null在語法上是有效的,所以我們可以把for語句的三個表達式留空,這樣就會產(chǎn)生不斷執(zhí)行for嵌套語句的效果.

實例代碼如下:

  1. <?php 
  2. for (;;) { 
  3.  //放置需要不斷執(zhí)行的語句 
  4. ?> 

雖然有一些任務(wù)會使用到無限循環(huán),但是大多數(shù)程序任務(wù),特別是PHP所能涉及的領(lǐng)域,在使用無限循環(huán)時都會添加一些終止循環(huán)的條件.

實例代碼如下:

  1. <?php 
  2. for (;;) { 
  3.  //如果是公元2199年,則跳出循環(huán) 
  4.  if (date('Y') == '2199') { 
  5.   break
  6.  } 
  7. ?> 

2、使用空表達式

接下來就是說說在初始化語句expr1中使用null語法,留空expr1最常見的作用就是完成更為復(fù)雜的初始化工作.

實例代碼如下:

  1. <?php 
  2. if (isset($i)) { 
  3.  unset($i); 
  4.  if ((int) date('') < 2008) { 
  5.   $i = 0; 
  6.  } else { 
  7.   $i = 1; 
  8.  } 
  9. else { 
  10.  $i =3; 
  11. for (;$i < 10;$i++) { 
  12.  echo $i
  13. ?> 

同樣道理,迭代表達式expr3也可能留空,也可以利用這點編寫更為復(fù)雜的迭代式,比如說根據(jù)不同的條件調(diào)用不同的迭代式.

而for語句中的條件語句expr2留空則是上面所說的無限循環(huán),當(dāng)然也可以添加一些更為復(fù)雜的條件去判斷什么時候跳出循環(huán),在此不在重復(fù).

3、多重循環(huán)

使用多重循環(huán)來控制多個變量也是在for語句中使經(jīng)常被忽略的一個特性.如下面的例子,在一般的任務(wù)中用到的一般會是雙重循環(huán),三重以上的循環(huán)一般意義不大.

實例代碼如下:

  1. <?php 
  2. for ($i = 0, $j = 10;$i <= 10;$i++, $j--) { 
  3.  echo "$i + $j = 10rn"
  4. ?> 
以上代碼將輸出:

0 + 10 = 10

1 + 9 = 10

2 + 8 = 10

3 + 7 = 10

4 + 6 = 10

5 + 5 = 10

6 + 4 = 10

7 + 3 = 10

8 + 2 = 10

9 + 1 = 10

10 + 0 = 10

4、更為復(fù)雜的表達式

如果把for語句的三個表達式寫得復(fù)雜一些,則可以用于優(yōu)化算法.甚至可以使用沒有循環(huán)體的for語句來完成一些任務(wù).比如計算累加或階乘:

實例代碼如下:

  1. //計算1-5的累加結(jié)果,斌值到$j 
  2. for ($i = 1,$j = 0; $i <= 5;$j += $i++); 
  3. echo $j
  4. //計算1-5的階乘結(jié)果,斌值到$j 
  5. for ($i = 1,$j = 1; $i <= 5;$j *= $i++); 
  6. echo $j
  7. ?> 

利用for循環(huán)返回近三個月的數(shù)據(jù).我們都知道,利用str_pad(intval($month),2,0,STR_PAD_LEFT)可以很方便的獲得上月的時間.

實例代碼如下:

  1. <?php 
  2. $y = date('Y');//獲取當(dāng)前時間年份 
  3. $m = date('m');//獲取當(dāng)前時間月份 
  4. if($m == 1) $time = ($y-1).'-12';//如果是1月份,則上個月就是去年的12月,所以這里的年份要減去1 
  5. else $time = $y."-".str_pad(intval($m-1),2,0,STR_PAD_LEFT);//獲取上個月時間 
  6. ?> 

如果需要前三個月數(shù)據(jù)的話,顯然這樣的處理方式還不夠,且類似的代碼反復(fù)執(zhí)行,效率不高,這時候選擇for循環(huán)就對了.

實例代碼如下:

  1. <?php 
  2. //for循環(huán)變量說明 $sm為起始月份 $em為結(jié)束月份 $ny為實際年份 
  3. if($m == 1) 
  4.   $sm = 11;//當(dāng)前月份是1月,以前三個月計算的話,起始月份就是去年11月 
  5.   $em = 13;//這里做為for循環(huán)結(jié)束標(biāo)記,結(jié)束月份是今年1月,加上12只是便于循環(huán) 
  6. elseif($m == 2) 
  7.   $sm = 12;//同上 
  8.   $em = 14; 
  9. else 
  10.   $sm = $m - 3; 
  11.   $em = $m
  12. for($x=$sm;$x<$em;$x++) 
  13.   if($m == 1 || $m == 2) 
  14.   { 
  15.     if($x >= 11) $ny = $y - 1;//實際年份是去年 
  16.     if($x >= 13) $x = $x - 12;//實際月份是今年 
  17.   } 
  18.   else $ny = $y
  19.   //年份、月份都順利得到了,后面就好辦了…… 
  20. ?> 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 大新县| 武隆县| 达日县| 甘孜县| 遂平县| 万荣县| 屯昌县| 德惠市| 莱芜市| 溆浦县| 京山县| 乌什县| 宝兴县| 鹰潭市| 怀柔区| 韶关市| 汤原县| 阿拉善盟| 拜城县| 中超| 临江市| 昭觉县| 额敏县| 珲春市| 永德县| 达日县| 成都市| 虞城县| 宝兴县| 乌海市| 赞皇县| 夏河县| 大竹县| 临汾市| 城固县| 通辽市| 景宁| 乌鲁木齐县| 石柱| 怀安县| 郴州市|