在之前的文章中為大家帶來了《如何搞定PHP超級全局變數(整理分享)》,這篇文章中詳細的介紹了PHP中超級全局變數的相關知識,本篇文章我們一起來看看PHP中的list、each函數遍歷陣列的相關知識,希望能夠幫助大家!
list函數與each函數是我們在日常生活中經常能夠用到的函數,那麼這兩個函數該怎麼使用?兩者之間有什麼特色?他們又是怎麼配合使用的?這兩個函數是比較有趣的陣列函數,函數學習起來並不難,那我們一起來看看吧。
list函數
#list
函數它的功能是:能夠將索引數組下標為0的對應為變數1,下標為1的對應變數2...list函數能夠將陣列的元素變成變數使用。
它的基本語法是:
list(变量1,变量2...)
範例如下:
<?php list($a , $b , $c, $d) = array('好好学习' ,'天天向上' ,'福如东海','寿比南山'); echo '$a----'.$a.'<br />'; echo '$b----'.$b.'<br />'; echo '$c----'.$c.'<br />'; echo '$d----'.$d.'<br />'; ?>
輸出結果:
由此可以看出,數組中「好好學習」的下標為0,就對應了list函數中的$a;也可以理解為,數組中變數為0的「好好學習」賦值給了list函數中的$a;以此類推。 list就是從左到右,一一對應索引數組從0開始的下標值。
同時還有一種情況,範例如下:
<?php list( , , $c, $d) = array('好好学习' ,'天天向上' ,'福如东海','寿比南山'); echo '$a----'.$a.'<br />'; echo '$b----'.$b.'<br />'; echo '$c----'.$c.'<br />'; echo '$d----'.$d.'<br />'; ?>
輸出結果:
在上述範例中,下標為2的福如東海賦值給了$c,list中的前兩個位置留了空,按照一一對應,所以好好學習和天天向上沒有變量與之對應。所以list函數嚴格遵守一一對應原則,也就是list函數的地一個變數對應的是數組中下標為0的元素,下標為1的對應的是list函數中的第二個變量,以此類推。
當然還有一種情況,範例如下:
<?php list($a , $b , $c, $d) = array(2=>'好好学习' ,'天天向上' ,'福如东海','寿比南山'); echo '$a----'.$a.'<br />'; echo '$b----'.$b.'<br />'; echo '$c----'.$c.'<br />'; echo '$d----'.$d.'<br />'; ?>
輸出結果:
在上述範例中,數組的下標因為鍵名直接從2開始,所以數組元素中沒有下標為0和1的元素,所以變數a和b就沒有對應的值。同時,list函數中只寫了四個變量,數組元素中的下標為4和5的福如東海、壽比南山也就沒有了對應的變數。
each函數
each
函數的函數是傳入一個陣列。它會將其中的一個元素拆分為一個新的陣列。每次執行這樣操作一個元素。執行一次先後移動一次,同樣的方式操作下一個陣列元素。執行到最後,返回false。
範例如下:
<?php $a=[ 'aaa'=>'好好学习', 'bbb'=>'天天向上', 'ccc'=>'福如东海', 'ddd'=>'寿比南山' ]; //第一次each $data = each($a); echo '<pre class="brush:php;toolbar:false">'; var_dump($data); echo ''; ?>
輸出結果:
#由上述範例可以看出執行第一次each函數,將陣列元素中的第一個元素也就是aaa=>好好學習拆為新的陣列。可以理解為,each函數讀取了第一個元素,將第一個元素分解開了,在新數組裡面,將原值(好好學習)放了索引下標1裡面,同時放到了關聯下標value裡面,將原鍵(aaa),放到了關聯下標key裡面,放到了索引下標0裡面。
這是運行了一次的結果,那我們再來看一下多運行幾次,範例如下:
<?php $a=[ 'aaa'=>'好好学习', 'bbb'=>'天天向上', 'ccc'=>'福如东海' ]; //第一次each $data = each($a); echo '<pre class="brush:php;toolbar:false">'; var_dump($data); echo ''; //第二次each $data = each($a); echo '
'; var_dump($data); echo ''; //第三次each $data = each($a); echo '
'; var_dump($data); echo ''; //第四次each $data = each($a); echo '
'; var_dump($data); echo ''; ?>
輸出結果:
由此可以看出,每讀取一次就會向後移動一次,將其中的每個元素拆分為新的數組,當讀取到最後的時候,沒有可操作的元素了,就會回傳了false。
list和each的配合
#我們知道了list的功能,也了解了each的功能,那麼兩者結合起來使用的話,會碰出什麼不一樣的火花呢?
我們透過範例來看一下:
<?php $a=[ 'aaa'=>'好好学习', 'bbb'=>'天天向上', 'ccc'=>'福如东海', ]; list($key,$value) = each($a); echo $key. '-----' .$value .'<br />'; ?>
輸出結果:
在上述實例中,each把元素拆了,然後list把0 =>aaa 賦值給了變數$key把1 => 好好學習賦值給了變數$value。透過我們之前講到的while迴圈語句的配合,我們可以得到下面的範例:
<?php $a=[ 'aaa'=>'好好学习', 'bbb'=>'天天向上', 'ccc'=>'福如东海', ]; while(list($key,$value) = each($a)){ echo $key. '-----' .$value .'<br />'; } ?>
輸出結果:
由上述結果可以看出,每循環一次,執行一次each,然後向後移動一個元素,執行到最後返回的是flash停止循環。
推薦學習:《PHP影片教學》
以上是學會使用PHP的List、each函數及配合的詳細內容。更多資訊請關注PHP中文網其他相關文章!