日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開源 > php教程 > php數(shù)組的遍歷函數(shù)與方法例子

php數(shù)組的遍歷函數(shù)與方法例子

來源:程序員人生   發(fā)布時(shí)間:2014-02-19 18:48:22 閱讀次數(shù):2449次

php中數(shù)組遍歷方法有很多種,如有:for,foreach,while(),list(),each()這些函數(shù)與方法都要我們?cè)跀?shù)組遍歷中會(huì)用到的,下面給大家介紹一下.

1. 使用for語句循環(huán)遍歷數(shù)組

a. 其它語言(只有這一種方式) 

b. PHP中這種方式不是我們首選方式 

c. 數(shù)組必須是索引數(shù)組,而且下標(biāo)還必須是連續(xù)的 索引數(shù)組下標(biāo)還可以不連序,數(shù)組還有關(guān)聯(lián)數(shù)組)

PHP實(shí)例代碼如下:

  1. <?php 
  2. /* 
  3. * 我們想要在遍歷的過程中改變以下數(shù)組中某些元素的值 
  4. */ 
  5. $people = Array( 
  6. Array(’name’ => ‘Kalle’, ’salt’ => 856412), 
  7. Array(’name’ => ‘Pierre’, ’salt’ => 215863) 
  8. ); 
  9. for($i = 0; $i < sizeof($people); ++$i
  10. $people[$i]['salt'] = rand(000000, 999999); 
  11. ?> 

以上代碼的問題,在于for的第二個(gè)表達(dá)式會(huì)導(dǎo)致代碼執(zhí)行很慢--因?yàn)槊看窝h(huán)時(shí)都要 計(jì)算一遍數(shù)組的長(zhǎng)度,由于數(shù)組的長(zhǎng)度始終不變,我們可以用一個(gè)中間變量來存儲(chǔ)數(shù)組長(zhǎng)度,然后用這個(gè)變量作為for循環(huán)的第二個(gè)表達(dá)式,這樣在循環(huán)的時(shí)候就可以直接使用該變量的值,不用每次重新計(jì)算,代碼如下:

  1. <?php 
  2. $people = Array( 
  3. Array(’name’ => ‘Kalle’, ’salt’ => 856412), 
  4. Array(’name’ => ‘Pierre’, ’salt’ => 215863) 
  5. ); 
  6. for($i = 0, $size = sizeof($people); $i < $size; ++$i
  7. $people[$i]['salt'] = rand(000000, 999999); 
  8. ?> 

2.使用foreach語句循環(huán)遍歷數(shù)組

  1. foreach(數(shù)組變量 as 變量值){  
  2.  循環(huán)體  

a.循環(huán)次數(shù)由數(shù)組的元素個(gè)數(shù)決定 

b.每一次循環(huán)都會(huì)將數(shù)組中的元素分別賦值給后面變量

  1. foreach(數(shù)組變量 as 下標(biāo)變量=> 值變量){ 

foreach遍歷3維數(shù)組:

  1. //foreach循環(huán)一個(gè)3維數(shù)組 
  2. /* 
  3. $biaoge=array
  4. "市場(chǎng)部"=>array
  5. array(1,"gaomou1","jingli11",4000), 
  6. array(2,"gaomou2","jingli22",4000), 
  7. array(3,"gaomou3","jingli33",4000) 
  8.  ), 
  9. "客服部"=>array
  10. array(1,"gao1","li11",4000), 
  11. array(2,"gao2","li22",4000), 
  12. array(3,"gao3","li33",4000) 
  13. ), 
  14. "業(yè)務(wù)部"=>array
  15.  array(1,"mou1","jing11",4000), 
  16.  array(2,"mou2","jing22",4000), 
  17.  array(3,"mou3","jing33",4000) 
  18.  ); 
  19. foreach($biaoge as $key=>$value){ 
  20. echo '<table align="center" width="600" border="1">'
  21. echo '<caption>聯(lián)系表</caption>'
  22. echo '<tr bgcolor="#dddddd">'
  23. echo '<th>標(biāo)號(hào)</th><th>名字</th><th>職位</th><th>工資</th></tr>'
  24. foreach($value as $row){ 
  25. if($row%2==0){ 
  26. $bg="#ffffff"
  27.  }else
  28.  $bg="#dddddd"
  29.  } 
  30.  echo '<tr bgcolor='.$bg.'>'
  31.  foreach($row as $col){ 
  32.  echo '<td>'.$col.'</td>'
  33.  } 
  34.  echo '</tr>'
  35. echo '</table>'
  36.  } 
  37. echo "<pre>"
  38. print_r($biaoge); 
  39. echo "</pre>"

3. while() list() each() 組合循環(huán)遍歷數(shù)組

each()函數(shù).

a. 需要一個(gè)數(shù)組作為參數(shù) 

b. 返回來的也是一個(gè)數(shù)組 

c. 返回來的數(shù)組是0, 1, key, value四個(gè)下標(biāo)(固定的)

0和key下標(biāo)是當(dāng)前參數(shù)數(shù)組元素的?

1和value下標(biāo)是當(dāng)前對(duì)數(shù)數(shù)組元素的值

d. 默認(rèn)認(rèn)當(dāng)前元素就是第一個(gè)元素 

e. 每執(zhí)行一次后就會(huì)將當(dāng)前元素向后移動(dòng) 

f. 如果到最后的元素再執(zhí)行這個(gè)函數(shù),則返回false

使用each遍歷數(shù)組的示例代碼如下:

  1. <?php 
  2. //使用each函數(shù)遍歷數(shù)組 
  3. $arrGoogle=array('google','Gmail','Chrome','Android'); 
  4. //第一次使用each取得當(dāng)前鍵值對(duì),并且將指針移到下一個(gè)位置 
  5. $arrG=each($arrGoogle); 
  6. //打印結(jié)果,并且換行以清晰顯示結(jié)果 
  7. print_r($arrG); 
  8. print '<br>'
  9. $arrGmail=each($arrGoogle); 
  10. print_r($arrGmail); 
  11. print '<br>'
  12. $arrChrome=each($arrGoogle); 
  13. print_r($arrChrome); 
  14. print '<br>'
  15. $arrAndroid=each($arrGoogle); 
  16. print_r($arrAndroid); 
  17. print '<br>'
  18. //當(dāng)指針位于數(shù)組末尾再次執(zhí)行函數(shù)each,如果是這樣再次執(zhí)行結(jié)果返回false 
  19. $empty=each($arrGoogle); 
  20. //如果指針無法繼續(xù)后移返回false 
  21. if($empty==false){ 
  22. print '指針以位于數(shù)組末尾,無法在向后移,故返回false'
  23. ?> 

注意:該函數(shù)的參數(shù)和返回值(在執(zhí)行該函數(shù)前指針不位于數(shù)組末尾時(shí))都為數(shù)組,在執(zhí)行函數(shù)前數(shù)組指針位于數(shù)組末尾時(shí)再次執(zhí)行該函數(shù)返回值為false,開始的位置是第一個(gè)元素,每(正常)執(zhí)行一次該函數(shù),指針向后移到下一個(gè)地址.

list()函數(shù)

a. list()=array(); 需要將一個(gè)數(shù)組賦值給這個(gè)函數(shù) 

b. 數(shù)組中的元素個(gè)數(shù),要和list()函數(shù)中的參數(shù)個(gè)數(shù)相同 

c. 數(shù)組中的每個(gè)元素值會(huì)賦值list()函數(shù)中的每個(gè)參數(shù),list()將每個(gè)參數(shù)轉(zhuǎn)為變量 

d. list()只能接收索引數(shù)組 

e. 按索引的下標(biāo)的順序

這不是真正的函數(shù),而是PHP的語言結(jié)構(gòu),list()用一步操作給一組變量進(jìn)賦值,即把數(shù)組中的值賦給一些變量,list()僅能用于數(shù)字索引的數(shù)組并假定數(shù)字索引從0開始,語法格式如下所示:

list(mixed varname,mixed ...)=array_expression  //list()語句的語法格式

list()語句和其它函數(shù)在使用上有很大的區(qū)別,并不是直接接收一個(gè)數(shù)組作為參數(shù),而是通過“=”去處符以賦值的方式,將數(shù)組中每個(gè)元素的值,對(duì)應(yīng)的賦給list()函數(shù)中的每個(gè)參數(shù),list()函數(shù)又將它中的每個(gè)參數(shù)轉(zhuǎn)換為直接可以在腳本中使用的變量,使用方法如下:

  1. <?php 
  2. $info=array('coffee','brown','caffeine');              //聲明一個(gè)索引數(shù)組$info 
  3.  
  4. list($drink,$color,$power)=$info;                      //將數(shù)組中的所有元素轉(zhuǎn)為變量 
  5. echo "$drink is $color and $power makes it special.n";//輸出的三個(gè)變量值是數(shù)組中三個(gè)元素的值 
  6.  
  7. list($drink, ,$power)=$info;                           //將數(shù)組中的部分元素變?yōu)樽兞?/span> 
  8. echo "$drink has $power.n";                           //輸出的兩個(gè)變更值是數(shù)組中的前兩個(gè)元素的值 
  9.  
  10. list(,,$power)=$info;                                  //跳過前兩個(gè)變量只將數(shù)組中第三個(gè)元素的值轉(zhuǎn)為變量 
  11. echo "I need $power!n";                               //輸出的一個(gè)變量值是數(shù)組中桃花汛三個(gè)元素的值勤 
  12. ?> 

通過上例了解list()函數(shù)的用法之后,將each()函數(shù)和list()函數(shù)結(jié)合起來使用,代碼如下:

  1. <?php 
  2. $contact=array("ID"=>1,"姓名"=>"高某","公司"=>"A公司","地址"=>"北京市"); 
  3. list($key,$value)=each($contact);           //將each()函數(shù)和list()函數(shù)聯(lián)合使用 
  4. echo "$key=>$value";      //輸出變量$key和$value,中間使用"=>"分隔 
  5. ?> 

while() 函數(shù)

while()循環(huán)的語法格式如下:

  1. while( list($key,$value) = each(array_expressin) ){ 
  2.        循環(huán)體; 

使用這種組合改寫前面使用foreach遍歷過的一維數(shù)組,代碼如下所示:

  1. <?php 
  2.  //聲明一個(gè)一維的關(guān)聯(lián)數(shù)組$contact 
  3.  $contact=array("ID"=>1, 
  4.   "姓名"=>"高某"
  5.   "公司"=>"A公司"
  6.   "地址"=>"北京市"
  7.   "電話"=>"(010)987665432"
  8.   "EMAIL"=>"gao@php.com" 
  9.  ); 
  10.  //以HTML列表的方式輸出數(shù)組中每個(gè)元素的信息 
  11.  echo '<dl>一個(gè)聯(lián)系人信息:'
  12.  while(list($key,$value) = each($contact) ){      //將foreach語句改寫成while,list()和each()的組合 
  13.   echo "<dd>$key:$value</dd>";                 //輸出每個(gè)元素的鍵/值勤 
  14.   } 
  15.  echo '</dl>'
  16. ?> 

while() 遍歷數(shù)據(jù)是需要結(jié)合list或each函數(shù)配置才可以遍歷,否則它單獨(dú)是無法完成數(shù)組遍歷的.

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 欧美一区二区性 | 亚洲精品日韩综合观看成人91 | 一区二区三区在线观看视频 | 日韩大片在线观看 | 精品综合网 | 中文字幕 在线观看 | 成人久久网站 | 午夜综合 | 91精品国产综合久久久亚洲 | 免费看男女www网站入口在线 | 成人在线高清 | 黄网站免费在线观看 | 成人午夜免费视频 | 国产一二三区在线 | 精品在线 | 天堂资源在线观看 | 成人高清在线 | 超碰97国产精品人人cao | 亚洲成人精品一区 | 亚洲国产黄色片 | a亚洲天堂 | 久久免费精品视频 | 欧美特级视频 | 国产黄色精品 | 久久99精品久久久久久按摩秒播 | aaaaaa亚洲 | 日韩欧美一级在线 | 欧美91视频| 波多野结衣中文字幕久久 | 日韩精品视频在线免费观看 | 污视频在线观看免费 | 久久视频在线免费观看 | 国产专区在线播放 | 污污视频免费网站 | 精品一级 | 一区二区免费 | 免费三级黄色 | 亚洲一区二区精品在线 | 日韩高清在线一区 | 91精品国产乱码久久久久久 | 欧美日韩亚洲综合 |