首頁  >  文章  >  php教程  >  數組與數組遍歷

數組與數組遍歷

WBOY
WBOY原創
2016-08-22 10:14:221271瀏覽

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

 

  從基礎開始說起:

  php陣列分為索引陣列,和關係型陣列

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

 

 開始寫一個陣列:

$userNane = array(<span style="color: #800000;">'</span><span style="color: #800000;">陈云</span><span style="color: #800000;">'</span>,<span style="color: #800000;">'</span><span style="color: #800000;">罗鑫</span><span style="color: #800000;">'</span>,<span style="color: #800000;">'</span><span style="color: #800000;">袁修成</span><span style="color: #800000;">'</span>);

 當然也可以這樣寫:

    $userNane[<span style="color: #800080;">0</span>] = <span style="color: #800000;">'</span><span style="color: #800000;">陈云</span><span style="color: #800000;">'</span><span style="color: #000000;">;

    $userNane[</span><span style="color: #800080;">1</span>] = <span style="color: #800000;">'</span><span style="color: #800000;">罗鑫</span><span style="color: #800000;">'</span><span style="color: #000000;">;

    $userNane[</span><span style="color: #800080;">2</span>] = <span style="color: #800000;">'</span><span style="color: #800000;">袁修成</span><span style="color: #800000;">'</span>;

 

現在來遍歷這個陣列

<span style="color: #0000ff;">for</span>($i = <span style="color: #800080;">0</span>;$if70f3dfc26a2a15f262162c414d3a21b<span style="color: #800000;">"</span><span>; </span>
<span>};</span>

 

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

 

<span style="color: #0000ff;">foreach</span> ($userNane <span style="color: #0000ff;">as</span> $key =><span> $value) {<br>   echo $key.</span><span style="color: #800000;">'</span><span style="color: #800000;">------</span><span style="color: #800000;">'</span>.$value.<span style="color: #800000;">"</span><span style="color: #800000;">df250b2156c434f3390392d09b1c9563</span><span style="color: #800000;">"</span><span>; <br>}</span>

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

 

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

 

ccc70dc546f18409f5b15c6511319a6f
<?<span style="color: #000000;">php
    $userNane[</span><span style="color: #800000;">'</span><span style="color: #800000;">陈云</span><span style="color: #800000;">'</span>] = <span style="color: #800080;">19</span><span style="color: #000000;">;

    $userNane[</span><span style="color: #800000;">'</span><span style="color: #800000;">罗鑫</span><span style="color: #800000;">'</span>] = <span style="color: #800080;">21</span><span style="color: #000000;">;

    $userNane[</span><span style="color: #800000;">'</span><span style="color: #800000;">袁</span><span style="color: #800000;">'</span>] = <span style="color: #800080;">11</span><span style="color: #000000;">;

    $a</span>=each($userNane);     <span style="color: #008000;">//</span><span style="color: #008000;">指针下移</span>
    echo $a[<span style="color: #800000;">"</span><span style="color: #800000;">key</span><span style="color: #800000;">"</span>].<span style="color: #800000;">'</span><span style="color: #800000;">----</span><span style="color: #800000;">'</span>.$a[<span style="color: #800000;">"</span><span style="color: #800000;">value</span><span style="color: #800000;">"</span>].<span style="color: #800000;">'</span><span style="color: #800000;">df250b2156c434f3390392d09b1c9563</span><span style="color: #800000;">'</span><span style="color: #000000;">;

    $a</span>=<span style="color: #000000;">each($userNane);
    echo $a[</span><span style="color: #800000;">"</span><span style="color: #800000;">key</span><span style="color: #800000;">"</span>].<span style="color: #800000;">'</span><span style="color: #800000;">----</span><span style="color: #800000;">'</span>.$a[<span style="color: #800000;">"</span><span style="color: #800000;">value</span><span style="color: #800000;">"</span>].<span style="color: #800000;">'</span><span style="color: #800000;">df250b2156c434f3390392d09b1c9563</span><span style="color: #800000;">'</span><span style="color: #000000;">;

    $a</span>=<span style="color: #000000;">each($userNane);
    echo $a[</span><span style="color: #800000;">"</span><span style="color: #800000;">key</span><span style="color: #800000;">"</span>].<span style="color: #800000;">'</span><span style="color: #800000;">----</span><span style="color: #800000;">'</span>.$a[<span style="color: #800000;">"</span><span style="color: #800000;">value</span><span style="color: #800000;">"</span>].<span style="color: #800000;">'</span><span style="color: #800000;">df250b2156c434f3390392d09b1c9563</span><span style="color: #800000;">'</span><span style="color: #000000;">;


    </span><span style="color: #008000;">/*</span><span style="color: #008000;">while (!!$a=each($userNane)) {         
    //根据while循环判断,条件内为真则继续执行循环体,为假则退出循环,两个!!将数组转化为布尔值,存在则代表 1
        echo $a["key"].'----'.$a["value"].'df250b2156c434f3390392d09b1c9563';
    }</span><span style="color: #008000;">*/</span>

    <span style="color: #008000;">//</span><span style="color: #008000;">each()函数返回的是一个数组

    </span><span style="color: #008000;">//</span><span style="color: #008000;">each后所在数组的“每一个”键值会被重新包装成一个新的数组,里面有四条数据,key and value,0 and 1

    </span><span style="color: #008000;">//</span><span style="color: #008000;">each完一次后指针下移一位,默认开始是第一位,也就是指向数组的第二条键值对,第二条键值对被重新包装秤数组</span>

?>

 

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

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

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

<span style="color: #008000;">$userNane = array(1,2,3);</span>

    <span style="color: #008000;">list($a,$b,$c) = $userNane;

    echo $a; </span> <span style="color: #008000;">//</span><span style="color: #008000;">1

</span>

為什麼要印出1呢,

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

 

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

$userNane[<span style="color: #800000;">'</span><span style="color: #800000;">陈云</span><span style="color: #800000;">'</span>] = <span style="color: #800080;">19</span><span style="color: #000000;">;

$userNane[</span><span style="color: #800000;">'</span><span style="color: #800000;">罗鑫</span><span style="color: #800000;">'</span>] = <span style="color: #800080;">21</span><span style="color: #000000;">;

$userNane[</span><span style="color: #800000;">'</span><span style="color: #800000;">袁</span><span style="color: #800000;">'</span>] = <span style="color: #800080;">11</span><span style="color: #000000;">;

list($name,$age) </span>=<span style="color: #000000;"> each($userNane);

    echo $name;  </span><span style="color: #008000;">//</span><span style="color: #008000;">陈云</span>
    echo $age;  <span style="color: #008000;">//</span><span style="color: #008000;">19<br><br><br></span>

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


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

<span style="color: #008000;"> </span>

 

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

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

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

 

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

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

list($name,$age) =<span style="color: #000000;"> each($userNane);
    echo $name;  </span><span style="color: #008000;">//</span><span style="color: #008000;">陈云</span>
    echo $age;  <span style="color: #008000;">//</span><span style="color: #008000;">19</span><span style="color: #000000;">

    list($name,$age) </span>=<span style="color: #000000;"> each($userNane);
    echo $name;  </span><span style="color: #008000;">//</span><span style="color: #008000;">罗鑫</span>
    echo $age;  <span style="color: #008000;">//</span><span style="color: #008000;">21</span>
<span style="color: #000000;">

    reset($userNane);<br>
    list($name,$age) </span>=<span style="color: #000000;"> each($userNane);
    echo $name;  </span><span style="color: #008000;">//</span><span style="color: #008000;">陈云</span>
    echo $age;  <span style="color: #008000;">//</span><span style="color: #008000;">19</span>

 

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

ccc70dc546f18409f5b15c6511319a6f
9e1686351822eae85fae6c4a2c330ca1<span style="color: #800080;">12</span>,<span style="color: #800000;">"</span><span style="color: #800000;">罗鑫</span><span style="color: #800000;">"</span>=><span style="color: #800080;">18</span><span style="color: #000000;">);

    var_dump(array_flip($number));

    </span><span style="color: #008000;">//</span><span style="color: #008000;">array_flip()交换数组中的键和值</span>

    
?>

具有作用看註釋~

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

看代碼:

<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].'|';   //数组里的 <span style="color: #ff6600;">第i个数组</span> 中的 <span style="color: #ff6600;">第j个元素</span>,这样理解第二维的数组
		}

		echo "<br />";
	}

	
?>

  

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

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

見程式碼:

    <span style="color: #008000;">//</span><span style="color: #008000;">遍历二位数组带key的</span>
    $food =<span style="color: #000000;"> array(
            array(</span><span style="color: #800000;">'</span><span style="color: #800000;">产品</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">苹果</span><span style="color: #800000;">'</span>,<span style="color: #800000;">'</span><span style="color: #800000;">价格</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">12</span><span style="color: #800000;">'</span>,<span style="color: #800000;">'</span><span style="color: #800000;">口味</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">香</span><span style="color: #800000;">'</span><span style="color: #000000;">),
            array(</span><span style="color: #800000;">'</span><span style="color: #800000;">产品</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">鸡肉</span><span style="color: #800000;">'</span>,<span style="color: #800000;">'</span><span style="color: #800000;">价格</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">13</span><span style="color: #800000;">'</span>,<span style="color: #800000;">'</span><span style="color: #800000;">口味</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">甜</span><span style="color: #800000;">'</span><span style="color: #000000;">),
            array(</span><span style="color: #800000;">'</span><span style="color: #800000;">产品</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">脉动</span><span style="color: #800000;">'</span>,<span style="color: #800000;">'</span><span style="color: #800000;">价格</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">14</span><span style="color: #800000;">'</span>,<span style="color: #800000;">'</span><span style="color: #800000;">口味</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">酸</span><span style="color: #800000;">'</span><span style="color: #000000;">)
        );

    </span><span style="color: #008000;">//</span><span style="color: #008000;">利用 foreach() 来遍历</span>

    <span style="color: #0000ff;">for</span> ($i=<span style="color: #800080;">0</span>; $i 82a3cbd10bb7d2d642758f2bfa4db491<span style="color: #000000;"> $value) {
            </span><span style="color: #008000;">//</span><span style="color: #008000;">echo $food[$i][$key].'|';   </span><span style="color: #008000;">//</span><span style="color: #008000;">只获取到数组里键 对应的值</span>
            echo $key.<span style="color: #800000;">'</span><span style="color: #800000;">---</span><span style="color: #800000;">'</span>.$value;   <span style="color: #008000;">//</span><span style="color: #008000;">打印出了二维数组的键and值</span>
<span style="color: #000000;">        }

        echo </span><span style="color: #800000;">"</span><span style="color: #800000;">df250b2156c434f3390392d09b1c9563</span><span style="color: #800000;">"</span><span style="color: #000000;">;
    }</span>

 

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

見程式碼:

    <span style="color: #008000;">//</span><span style="color: #008000;">遍历二位数组带key的</span>
    $food =<span style="color: #000000;"> array(
            array(</span><span style="color: #800000;">'</span><span style="color: #800000;">产品</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">苹果</span><span style="color: #800000;">'</span>,<span style="color: #800000;">'</span><span style="color: #800000;">价格</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">12</span><span style="color: #800000;">'</span>,<span style="color: #800000;">'</span><span style="color: #800000;">口味</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">香</span><span style="color: #800000;">'</span><span style="color: #000000;">),
            array(</span><span style="color: #800000;">'</span><span style="color: #800000;">产品</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">鸡肉</span><span style="color: #800000;">'</span>,<span style="color: #800000;">'</span><span style="color: #800000;">价格</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">13</span><span style="color: #800000;">'</span>,<span style="color: #800000;">'</span><span style="color: #800000;">口味</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">甜</span><span style="color: #800000;">'</span><span style="color: #000000;">),
            array(</span><span style="color: #800000;">'</span><span style="color: #800000;">产品</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">脉动</span><span style="color: #800000;">'</span>,<span style="color: #800000;">'</span><span style="color: #800000;">价格</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">14</span><span style="color: #800000;">'</span>,<span style="color: #800000;">'</span><span style="color: #800000;">口味</span><span style="color: #800000;">'</span>=><span style="color: #800000;">'</span><span style="color: #800000;">酸</span><span style="color: #800000;">'</span><span style="color: #000000;">)
        );


    </span><span style="color: #008000;">//</span><span style="color: #008000;">利用 list--->each() 来遍历</span>

    <span style="color: #0000ff;">for</span> ($i=<span style="color: #800080;">0</span>; $i <count($food); $i++<span style="color: #000000;">) { 
        </span><span style="color: #0000ff;">while</span> ( list($key,$value) = each($food[$i])) {    <span style="color: #008000;">//</span><span style="color: #008000;">each后的数组拆分赋给list()里的变量($key,$value)</span>
            echo $key.<span style="color: #800000;">'</span><span style="color: #800000;">---</span><span style="color: #800000;">'</span>.$value.<span style="color: #800000;">'</span><span style="color: #800000;">|</span><span style="color: #800000;">'</span>;   <span style="color: #008000;">//</span><span style="color: #008000;">打印出了二维数组的键值</span>
<span style="color: #000000;">        }

        echo </span><span style="color: #800000;">"</span><span style="color: #800000;">df250b2156c434f3390392d09b1c9563</span><span style="color: #800000;">"</span><span style="color: #000000;">;
    }</span>

 

 

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

如有錯誤,歡迎指針~

麼麼噠,睡覺去鳥...

 

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn