程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 數組與數組遍歷,數組數組遍歷

數組與數組遍歷,數組數組遍歷

編輯:關於PHP編程

數組與數組遍歷,數組數組遍歷


  斷斷續續地學習了php有一段時間了,總是不能很好地理解,如今把數組和遍歷數組整理出來。

 

  從基礎開始說起:

  php數組分為索引數組,和關系型數組,

  索引數組就是下標從0,1,2,3,4...開始,而關系型數組則非,理解為帶key的(key為鍵)

 

 開始寫一個數組:

$userNane = array('陳雲','羅鑫','袁修成');

 當然也可以這樣寫:

    $userNane[0] = '陳雲';

    $userNane[1] = '羅鑫';

    $userNane[2] = '袁修成';

 

現在來遍歷這個數組

for($i = 0;$i<2;$i++){
        echo $userNane[$i]; 
};
//or

for($i = 0;$i<count($userNane);$i++){
/**利用count()函數來遍歷數組的元素個數**/ 
    echo $userNane[$i]."<br />"; 
};

 

此時如果數組的下標如果不是從0開始(非索引數組),那麼單單只靠for循環和count()是沒用的,此時我們的好朋友foreach()就來了。

 

foreach ($userNane as $key => $value) {
   echo $key.'------'.$value."<br />";
}

$key代表鍵值(就=也就是類似於索引下標)$value代表鍵值(下標)的值,
$key與$value是可以隨意更變名字的,只是約定俗成用這兩個變量進行表示

 

除了foreach()外我們還有一個好朋友也可以來遍歷數組,那就是each()

 

<meta charset="UTF-8">
<?php
    $userNane['陳雲'] = 19;

    $userNane['羅鑫'] = 21;

    $userNane['袁'] = 11;

    $a=each($userNane);     //指針下移
    echo $a["key"].'----'.$a["value"].'<br />';

    $a=each($userNane);
    echo $a["key"].'----'.$a["value"].'<br />';

    $a=each($userNane);
    echo $a["key"].'----'.$a["value"].'<br />';


    /*while (!!$a=each($userNane)) {         
    //根據while循環判斷,條件內為真則繼續執行循環體,為假則退出循環,兩個!!將數組轉化為布爾值,存在則代表 1
        echo $a["key"].'----'.$a["value"].'<br />';
    }*/

    //each()函數返回的是一個數組

    //each後所在數組的“每一個”鍵值會被重新包裝成一個新的數組,裡面有四條數據,key and value,0 and 1

    //each完一次後指針下移一位,默認開始是第一位,也就是指向數組的第二條鍵值對,第二條鍵值對被重新包裝秤數組

?>

 

關於each()介紹看注釋就明白了,each()完數組,數組裡的每一個元素(鍵值對)都會被重新包裝成一個新的數組,裡面有四條數據。

但是這樣的遍歷太麻煩了,又相當的low..

此時each()的好朋友list()登場啦,首先介紹一下list():

$userNane = array(1,2,3);

    list($a,$b,$c) = $userNane;

    echo $a;  //1

為什麼打印出1呢,

是這樣子的,list()函數將數組中的值賦給一些變量,對應著(按照數組循序)把$userNane數組裡的元素分別賦值給$a,$b,$c

 

此時理解了list(),配上它的好朋友each()就能很便捷地遍歷數組了

$userNane['陳雲'] = 19;

$userNane['羅鑫'] = 21;

$userNane['袁'] = 11;

list($name,$age) = each($userNane);

    echo $name;  //陳雲
    echo $age;  //19


list($name,$age) = each($userNane);


  echo $name; //羅鑫
  echo $age; //21

 

 

因為each完後的數組裡的元素被重新包裝成一個新的數組,每個新的數組有四條數據,

此時每個數據有兩個對應的key and value,此時key,value不能用,但是 0 和 1 就派上用場了,

借用它把$userNane裡的新元素數組裡的0(key)賦給$name身上,1(value)賦值給$age身上

 

因為each()完後數組指針將下移一位,如果在繼續list--each的話就會打印出我的朋友袁修成的信息,

此時我想重新打印第一個,則要用到reset()函數了,它的作用是將數組指針重置到第一位

list($name,$age) = each($userNane);
    echo $name;  //陳雲
    echo $age;  //19

    list($name,$age) = each($userNane);
    echo $name;  //羅鑫
    echo $age;  //21


    reset($userNane);
list($name,$age) = each($userNane); echo $name; //陳雲 echo $age; //19

 

到這裡介紹一下兩個好用的數組函數:

<meta charset="UTF-8">
<?php
    $number = array(2,5,1,6,4,1,2,6);

    $newNumber = array_unique($number);

    //array_unique移除數組中重復的值,並且當時就創建了一個新的數組,
    //新的數組數據原封不動,老的數組就已經移除掉了重復的值

    print_r($newNumber);



    $number = array("陳雲"=>12,"羅鑫"=>18);

    var_dump(array_flip($number));

    //array_flip()交換數組中的鍵和值

    
?>

具有作用看注釋~

太晚了,人有點累了,不不不,我親愛的二維數組還沒遍歷呢,怎能睡覺呢,不可以!!!

看代碼:

<meta charset="UTF-8">
<?php
	//遍歷二位數組
	$food = array(
			array('蘋果','香蕉','梨子'),
			array('雞肉','豬肉','牛肉'),
			array('脈動','快線','果粒橙'),
		);

	for ($i=0; $i <count($food); $i++) { 
		for ($j=0; $j <count($food[$i]);$j++) { 
			echo $food[$i][$j].'|';   //數組裡的 第i個數組 中的 第j個元素,這樣理解第二維的數組
		}

		echo "<br />";
	}

	
?>

  

二維數組是啥?這裡你可以把他理解為數組裡的數組,上述代碼就是數組裡有三個數組。

此時問題來了,要是帶有鍵值對二維數組呢?如何讓遍歷。

見代碼:

    //遍歷二位數組帶key的
    $food = array(
            array('產品'=>'蘋果','價格'=>'12','口味'=>'香'),
            array('產品'=>'雞肉','價格'=>'13','口味'=>'甜'),
            array('產品'=>'脈動','價格'=>'14','口味'=>'酸')
        );

    //利用 foreach() 來遍歷

    for ($i=0; $i <count($food); $i++) { 
        foreach ($food[$i] as $key => $value) {
            //echo $food[$i][$key].'|';   //只獲取到數組裡鍵 對應的值
            echo $key.'---'.$value;   //打印出了二維數組的鍵and值
        }

        echo "<br />";
    }

 

看注釋就一目了然啦,除了foreach() 來遍歷,我們的情侶搭檔list---each也是可以實現的

見代碼:

    //遍歷二位數組帶key的
    $food = array(
            array('產品'=>'蘋果','價格'=>'12','口味'=>'香'),
            array('產品'=>'雞肉','價格'=>'13','口味'=>'甜'),
            array('產品'=>'脈動','價格'=>'14','口味'=>'酸')
        );


    //利用 list--->each() 來遍歷

    for ($i=0; $i <count($food); $i++) { 
        while ( list($key,$value) = each($food[$i])) {    //each後的數組拆分賦給list()裡的變量($key,$value)
            echo $key.'---'.$value.'|';   //打印出了二維數組的鍵值
        }

        echo "<br />";
    }

 

 

到此,遍歷就算是結束啦~

如有錯誤,歡迎指針~

麼麼哒,睡覺去鳥...

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved