我們先來講list函數(shù)。
list函數(shù)語法:
// list ( mixed $變量1 [, mixed $變量n ] )
它的功能:將索引數(shù)組下標(biāo)為0的對(duì)應(yīng)我變量1,下標(biāo)1的對(duì)應(yīng)變量2,依此類推。
我們來實(shí)驗(yàn)看看:
<?php list($one , $two , $three) = array('張三' ,'李四' ,'王五'); //再次聲明:單引號(hào)不結(jié)釋變量,所以輸出的是字符串$one echo '$one----'.$one.'<br />'; echo '$two----'.$two.'<br />'; echo '$three----'.$three.'<br />'; // 結(jié)果 /* $one----張三 $two----李四 $three----王五 */ ?>
分析結(jié)果:
結(jié)論:
.將下標(biāo)為0的張三賦值給了$one
將下標(biāo)為1的李四賦值給了$two
將下標(biāo)為2的王五賦值給了$three
因此,我們知道了list的功能就是從左到右,一一對(duì)應(yīng)索引數(shù)組從0開始的下標(biāo)值。
請(qǐng)嚴(yán)格記?。核饕龜?shù)組的一一對(duì)應(yīng)原則。list第一個(gè)變量對(duì)應(yīng)的是下標(biāo)為0的數(shù)組元素,下標(biāo)為1的對(duì)應(yīng)的是list里面的第二個(gè)數(shù)組元素,對(duì)應(yīng)的變量或數(shù)組值為空都會(huì)報(bào)錯(cuò)。
例如:
<?php list( , , $three) = array('張三' ,'李四' ,'王五'); echo '$one----'.$one.'<br />'; echo '$two----'.$two.'<br />'; echo '$three----'.$three.'<br />'; // 報(bào)錯(cuò)。 ?>
<?php ($name, $age, $sex) array('Lge' ,'20' ,'男'); echo '我的名字叫:'..'<br />'; echo '我的年齡是:'.$age.'<br />'; echo '我的性別是:'.$sex.'<br />'; ?>
each 函數(shù)的規(guī)律性上面就更有特點(diǎn)了,并且比較有趣。
語法:
// array each ( array &$array )
功能:傳入一個(gè)數(shù)組。它會(huì)將其中的一個(gè)元素拆為個(gè)新數(shù)組。每次執(zhí)行這樣操作一個(gè)元素。執(zhí)行一次先后移動(dòng)一次,同樣的方式操作下一個(gè)數(shù)組元素。執(zhí)行到最后,返回false。
我們先來看看each是怎么操作的數(shù)組元素:
<?php //定義一個(gè)變量叫$kongjie $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'腿特別長特別細(xì)', 'mei'=>'好白', 'pl'=>'五官端正', 'type'=>'那就是女神', '我是吊絲不敢跟女神搭訕' ]; //第一次each $data = each($kongjie); echo '<pre>'; var_dump($data); echo '</pre>'; //第一次each 結(jié)果: /* array(4) { [1]=> string(15) "穿黑衣服的" ["value"]=> string(15) "穿黑衣服的" [0]=> string(3) "gao" ["key"]=> string(3) "gao" } */ ?>
總結(jié):
讀取了$kongjie中的第一個(gè)元素,將第一個(gè)元素('gao'=>'穿黑衣服的')分解開了。
分解后第一個(gè)元素變成了一個(gè)新數(shù)組。
在新數(shù)組里面,將原值(穿黑衣服的)放了索引下標(biāo)1里面,同時(shí)放到了關(guān)聯(lián)下標(biāo)value里面。
在新數(shù)組里面,將原鍵(gao),放到了關(guān)聯(lián)下標(biāo)key里面,放到了索引下標(biāo)0里面。
如圖所示:
這樣我們一下子就看明白了。
接下來我們說說each的另外一個(gè)特性。讀一次,向后移動(dòng)一個(gè)元素。
<?php //定義一個(gè)變量叫$kongjie(空姐) $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'退特別長特別細(xì)', 'mei'=>'好白', ]; //第一次each $data = each($kongjie); echo '<pre>'; var_dump($data); echo '-----華麗麗分割線------<br />'; //第2次each $data = each($kongjie); var_dump($data); echo '-----華麗麗分割線------<br />'; //第3次each【執(zhí)行到了最后一個(gè)元素了】 $data = each($kongjie); var_dump($data); echo '</pre>'; ?>
結(jié)果:
/* array(4) { [1]=> string(15) "穿黑衣服的" ["value"]=> string(15) "穿黑衣服的" [0]=> string(3) "gao" ["key"]=> string(3) "gao" } -----華麗麗分割線------ array(4) { [1]=> string(21) "退特別長特別細(xì)" ["value"]=> string(21) "退特別長特別細(xì)" [0]=> string(4) "shou" ["key"]=> string(4) "shou" } -----華麗麗分割線------ array(4) { [1]=> string(6) "好白" ["value"]=> string(6) "好白" [0]=> string(3) "mei" ["key"]=> string(3) "mei" } */
總結(jié):
讀一次向后移動(dòng)一次【可以想象有一個(gè)記錄的箭頭在移動(dòng)】,將其中的每個(gè)元素拆解成一個(gè)新數(shù)組
讀取到最后,沒有可操作的元素了,就會(huì)返回了false,不想的同學(xué)可以試試哦。
<?php $student=[ 'xiaoming'=>'17', 'xiaoliang'=>'18', ]; $data = each($student); var_dump($data); ?>// [1] => "" [0] => ""
我們知道了list的特性,也知道了each的特性。那list是不是可以和each配合起來一起來完成一些工作呢?
例如:
// list($key,$value) = each($array);
而list中的第一個(gè)變量會(huì)去找索引下面0的元素去賦值,第二個(gè)變量會(huì)找索引下標(biāo)為1的元素對(duì)變量賦值。
我們來看看下面例子:
<?php //定義一個(gè)變量叫$kongjie(空姐) $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'腿特別長特別細(xì)', 'mei'=>'好白', ]; list($key,$value) = each($kongjie); echo $key. '-----' .$value .'<br />'; // 結(jié)果: /* gao-----穿黑衣服的 */ ?>
總結(jié):
each 把變量拆成了4個(gè)元素
而list把0 =>gao 賦值給了變量$key
list把1 => 穿黑衣服的 賦值給了變量 $value
each到最后會(huì)返回false,因此我可以用布爾型循環(huán)while來配合完成數(shù)組的循環(huán),下面我們看看使用循環(huán)的例子:
<?php //定義一個(gè)變量叫$kongjie(空姐) $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'退特別長特別細(xì)', 'mei'=>'好白', ]; while(list($key,$value) = each($kongjie)){ echo $key. '-----' .$value .'<br />'; } // 結(jié)果: /* gao-----穿黑衣服的 shou-----退特別長特別細(xì) mei-----好白 */ ?>
總結(jié):
循環(huán)一次,執(zhí)行一次each,執(zhí)行代碼,然后向后移動(dòng)一個(gè)元素
執(zhí)行到最后返回fasle,因此停止執(zhí)行。
可以通過each和list配合實(shí)現(xiàn)foreach一樣的效果。
作為了解章節(jié),不過在實(shí)際開發(fā)中可能也會(huì)用到哦!建議大家課后可以多多練習(xí)練習(xí)!