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

首頁 > 語言 > PHP > 正文

php foreach遍歷數(shù)組用法介紹

2024-09-04 11:46:01
字體:
供稿:網(wǎng)友

在php中遍歷數(shù)組有很多方法,foreach、each、list、for等等遍歷數(shù)組語句,但是在這幾種中foreach遍歷數(shù)組性能最好,所以我也常用,下面我來介紹入門者foreach遍歷數(shù)組實(shí)例.

語法:

foreach ( array_expression as $key => $value ) statement

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

  1.  $color=array('white' => '白色' , 
  2.        'black' => '黑色' , 
  3.        'red' => '紅色' , 
  4.        'green' => '綠色'
  5.        'yellow' => '黃色'); 
  6.  foreach$color as $cecho $c ."
    "
    ;     
  7. ?> 

通過foreach不僅可以獲得元素的值也可以獲得鍵名,結(jié)構(gòu)形式:

實(shí)例代碼如下:

  1. foreach$color as $cecho $c ."
    "

  1. foreach$color as $key => $cecho $key.$c ."
    "

這里跟第一種方法的區(qū)別就是多了個(gè)$key,也就是除了把當(dāng)前元素的值賦給$value外,當(dāng)前元素的鍵值也會(huì)在每次循環(huán)中被賦給變量$key.鍵值可以 是下標(biāo)值,也可以是字符串.比如book[0]=1中的"0",book[id]="001"中的"id".

下面來仔細(xì)探討下foreach使用中的一些問題.

普通情況下,foreach($arr as $value)中的$arr和$value是拷貝,不受外部影響的.

實(shí)例代碼如下:

  1. $arr = array(0,1,2,3,4,5); 
  2. foreach($arr as $value){ 
  3.  $arr = array(); 
  4.  echo $value; 
  5. // 12345 

但如果$arr是引用的話,情況則不同了,我們用代碼來說明問題

實(shí)例代碼如下:

  1. $arr = array(0,1,2,3,4,5); 
  2. $arr = &$arr
  3. foreach($arr as $value){ 
  4.  $arr = array(); 
  5.  echo $value
  6. // 0 

這是因?yàn)檠h(huán)用的$arr是直接指向原數(shù)據(jù)的,而不是copy了一份.如果$value是引用,而$arr不是引用,其結(jié)果是一樣的,同樣$value是指向原數(shù)據(jù)的而不是copy.

實(shí)例代碼如下:

  1. $arr = array(0,1,2,3,4,5); 
  2. foreach($arr as &$value){ 
  3.  $arr = array(); 
  4.  echo $value
  5. // 結(jié)果是: 0 

還有一種情況比較特殊,即是如果定義了$arr為全局變量的話,$arr也會(huì)變成引用:

實(shí)例代碼如下:

  1. global $arr
  2. $arr = array(0,1,2,3,4,5); 
  3. foreach($arr as $value){ 
  4.  $arr = array(); 
  5.  echo $value
  6. // 結(jié)果是: 0 

如果兩次循環(huán)一個(gè)數(shù)組,一定不能這樣寫

實(shí)例代碼如下:

  1. foreach($arr as &$value){} 
  2. foreach($arr as $value){} 

這會(huì)導(dǎo)致第二次的循環(huán)的結(jié)果不正確(可能是php的bug吧).可以用以下幾種來代替

實(shí)例代碼如下:

  1. //solution 1 
  2. foreach($arr as &$value){} 
  3. unset($value); 
  4. foreach($arr as $value){} 
  5. //solution 2 
  6. foreach($arr as &$value){} 
  7. foreach($arr as &$value){} 
  8. //solution 3 
  9. foreach($arr as &$value){} 
  10. $arr2 = $arr
  11. foreach($arr2 as $value){} 

防止foreach出現(xiàn)未定義情況,盡量這樣來寫foreach

實(shí)例代碼如下:

  1. foreach((array)$arr as $value) {} 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 北流市| 乐清市| 枣阳市| 宁津县| 香河县| 色达县| 东台市| 仁寿县| 阿鲁科尔沁旗| 龙门县| 南汇区| 张家界市| 东乡族自治县| 苏州市| 克山县| 彭阳县| 长顺县| 洞口县| 罗城| 广宗县| 行唐县| 涿州市| 观塘区| 安阳县| 苗栗市| 凤庆县| 佛山市| 永福县| 龙陵县| 博兴县| 蒲城县| 开原市| 太谷县| 丽江市| 曲松县| 张家界市| 赤壁市| 五指山市| 文登市| 独山县| 内江市|