《PHP教程:PHP循環遍歷數組的3種方法list()、each()和while總結》要點:
本文介紹了PHP教程:PHP循環遍歷數組的3種方法list()、each()和while總結,希望對您有用。如果有疑問,可以聯系我們。
①each()函數PHP學習
each()函數需要傳遞一個數組作為參數,返回數組中當前元素的鍵/值對,并向后移動數組指針到下一個元素的位置.鍵/值對被返回帶有4個元素的關聯和索引混合的數組,鍵名分別為0、1、key和value.其中鍵名0和key對應的值是一樣的,是數組元素的鍵名,1和value則包含有數組元素的值.如果內部指針越過了數組的末端,則each()返回FALSE.each()函數的使用如下所示:PHP學習
代碼如下:
<?php
$contact = array("ID" => 1,"姓名" => "高某","公司" => "A公司","地址" => "北京市",);
$id = each($contact); //返回數組$contact中第一個元素的鍵/值對,是帶有4個元素的數組
print_r($id); //輸出數組$id:Array([1]=>1,[value]=>1,[0]=>ID,[key]=>ID)
?
$name = each($contact); //返回數組$contact中的第二個元素的鍵/值對,是帶有4個元素的數組
print_r($name); //輸出Array([1]=>高某,[value]=>高某,[0]=>姓名,[key]=>姓名)
?
$company = each($contact);
print_r($company); //輸出Array([1]=>A公司,[value]=>A公司,[0]=>公司,[key]=>公司)
?
$address = each($contact);
print_r($address); //輸出Array([1]=>北京市,[value]=>北京市,[0]=>地址,[key]=>地址)
?
$no = each($contact);
var_dump($no); //輸出bool(false)
?>
②list()函數PHP學習
這不是真正的函數,而是PHP的語言結構.list()用一步操作給一組變量進行賦值,即把數組中的值賦給一些變量.list()僅能用于數字索引的數組并假定數組索引從0開始.語法格式如下所示:
PHP學習
代碼如下:
list(mixed varname,mixed…) = array_expression
list()語句和其他函數在使用上有很大的區別,并不是直接接收一個數組作為參數.而是通過“=”運算符以賦值的方式,將數組中的每一個元素的值,對應的賦給list()函數中的每一個參數.list()函數又將它中的每個參數轉換為直接可以在腳本中使用的變量.使用方式如下:
代碼如下:
<?php
$info = array('coffee','brown','caffeine');
list($drink,$color,$power) = $info;
?
list($drink,,$power) = $info; //變量的值是數組中第一個和第三個值
?
list( , ,$power) = $info; //變量值是數組中第三個元素的值
?>
通過上例了解list()函數的用法之后,將each()函數和list()函數結合起來使用.代碼如下所示:PHP學習
代碼如下:
<?php
$contact = array("ID" => 1,"姓名" => "高某","公司" => "A公司","地址" => "北京市",);
?
list($key,$value) = each($contact);
echo "$key => $value"; //輸出變量$key和$value,中間使用“=>”分割
?>
③while循環 遍歷數組PHP學習
前面介紹的each()和list()語句的使用,就不難理解如果使用while循環遍歷數組了.使用的語法格式如下所示:
PHP學習
代碼如下:
while(list($key,$value) = each(array_expression)){
循環體
}
這種聯合體的格式遍歷給定的array_expression數組.在while()語句每次循環中,each()語句將當前數組元素的鍵,賦給list()函數的第一個參數變量$key.并將當前數組元素中的值,賦給list()函數中的第二個參數變量$value,并且each()語句執行之后還會把數組內部的指針向后移動一步,因此下次while()語句循環時,將會得到該數組中下一個元素的鍵/值對.直到數組的結尾each()語句返回FALSE,while()語句停止循環,結束數組的遍歷.
代碼如下:
<?php
$contact = array(
"ID" => 1,
"姓名" => "高某",
"公司" => "A公司",
"地址" => "北京市",
"電話" => "(010)98765432",
"EMAIL" => "gao@brophp.com",
);
?
//以HTML列表的方式輸出數組中每個元素的信息
echo '<dl>一個聯系人信息:';
?
while(list($key,$value) = each($contact)){
echo "<dd>$key : $value</dd>";
}
?
echo '</dl>';
?>
也可以是喲on個同樣的方式嵌套遍歷多維數組.雖然while遍歷數組的結果和freach語句相同,但這兩種辦法是有區別的.在使用while語句遍歷數組之后,each()語句已經將傳入的數組參數內部指針指向了數組末端.當再次使用while語句遍歷同一個數組時,數組指針已經在數組的末端,each()語句直接返回FALSE,while語句不會被執行循環.只有在while語句執行之前調用reset()函數,重新將數組指針指定第一個元素.而foreach語句會自動重置數組的指針位置,當foreach開始執行時,數組內部的指針會自動指向第一個單元.這意味著不需要在foreach循環前調用reset()函數.
PHP學習
維易PHP培訓學院每天發布《PHP教程:PHP循環遍歷數組的3種方法list()、each()和while總結》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/14001.html