之前咱們常常會想怎麼來實現php數組循環輸出來,本文章來介紹了利用php中經常使用的四種循環語句來實現單數組或多維數組循環輸出方法. php
在 PHP 中,咱們可使用下列循環語句: mysql
while 程序員
只要指定的條件成立,則循環執行代碼塊 web
do...while sql
首先執行一次代碼塊,而後在指定的條件成立時重複這個循環 express
for 數組
循環執行代碼塊指定的次數 函數
foreach 測試
根據數組中每一個元素來循環代碼塊 spa
先咱們利用php自帶函數對php數組進行遍歷
隨手可得array_keys()和array_values()函數以用來獲得數組中全部關鍵字和對應的值的列表.
實例代碼以下:
- <?php
// define an array
$menu = array('breakfast' => 'bacon and eggs', 'lunch' => 'roast beef', 'dinner' => 'lasagna');
/* returns the array ('breakfast', 'lunch', 'dinner') with numeric indices */
$result = array_keys($menu);
print_r($result);
print "<br />";
/* returns the array ('bacon and eggs', 'roast beef', 'lasagna') with numeric indices */
$result = array_values($menu);
print_r($result);
利用foreach 遍歷php數組
PHP foreach() 語法結構用於遍歷操做或輸出數組,foreach() 僅能用於遍歷數組或對象,當試圖將其用於其它數據類型或者一個未初始化的變量時會產生錯誤.
實例代碼以下:
- list = array('upid'=>'1','title'=>'公司新聞','list'=>array('id'=>'3','title'=>'公司新聞標題測試!','intime'=>'2009-29-5'));
- foreach ($list as $v=>$a)
- {
- echo $a['upid'] .'-'. $a['title'];
- foreach ($a['list'] as $b){
- echo $b['title'];
- }
- }
使用數組鍵值實例代碼以下:
- <?php
- $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
- foreach ($arr_age as $key=>$age) {
- echo $key,': ',$age,'<br />';
- }
- ?>
運行例子輸出:
wang: 18
zhang: 25
當 foreach 開始執行時,數組內部的指針會自動指向第一個單元,這意味着不須要在 foreach 循環以前調用 reset().
for() 循環遍歷數組
若是是操做連續鍵值的數組,也能夠採用 for() 循環來遍歷數組:
實例代碼以下:
- <pre>
- <?php
- $shuzu=array("ni","wo","ta","php","mysql");
- $count=count($shuzu);
- echo "使用for遍歷數組";
- echo "<br/>$nbsp;<br/>";
- for($i=0;$i<$count;$i++)
- {
- $j=$i+1;
- echo "第{$j}個元素是: $shuzu[$i]";
- echo "<br/>$nbsp;<br/>";
- }
- ?>
- </pre>
25
也能夠用 list() 和 each() 結合來遍歷php數組,但測試發現效率不如 foreach() .
list函數
list() 函數用數組中的元素爲一組變量賦值.
注意,與 array() 相似,list() 其實是一種語言結構,不是函數.
語法
list(var1,var2...)參數 描述
var1 必需.第一個須要賦值的變量.
var2 可選.能夠有多個變量.
提示和註釋
註釋:該函數只用於數字索引的數組,且假定數字索引從 0 開始
*/
實例代碼以下:
- $colors = array('red','blue','green','yellow');
- while(list($key,$val) = each($colors)) {
- echo "other list of $val.<br />";
- }
- PHP中遍歷數組有三種經常使用的方法:
1、使用for語句循環遍歷數組;
2、使用foreach語句遍歷數組;
3、聯合使用list()、each()和while循環遍歷數組。
這三種方法中效率最高的是使用foreach語句遍歷數組。從PHP4開始就引入了foreach結構,是PHP中專門爲遍歷數組而設計的語句,推薦你們使用。先分別介紹這幾種方法。
1、使用for語句循環遍歷數組
值得你們注意的是使用for語句循環遍歷數組要求遍歷的數組必須是索引數組。PHP中不只有關聯數組並且還有索引數組,因此PHP中不多用for語句循環遍歷數組。
實例代碼以下:
複製代碼代碼以下:
<?php
$arr = array('http://www.jb51.net','腳本之家','PHP教程');
$num = count($arr);
for($i=0;$i<$num;++$i){
echo $arr[$i].'<br />';
}
?>
註釋:上例代碼中咱們先計算出數組$arr中元素的個數,而後才使用在for語句,這樣作很高效的。由於若是是for($i=0;$i< count($arr);++$i)的話,每次循環都會計算數組$arr中元素的個數,而使用上面的方式能夠減去這種開銷。使用++$i也是爲了提升效率,前面有文章咱們提到過,建議你們再看看。
上面代碼的輸出結果爲:
http://www.jb51.net
腳本之家
PHP教程
2、使用foreach語句遍歷數組
使用foreach語句循環遍歷數組有二種方式,咱們使用的最多的仍是第一種方式。介紹以下:
第一種方式:
foreach(array_expression as $value){
//循環體
}
實例代碼:
複製代碼代碼以下:
<?php
$arr = array('http://www.jb51.net','腳本之家','PHP教程');
foreach($arr as $value){
echo $value.'<br />';
}
?>
每次循環中,當前元素的值被賦給變量$value,而且把數組內部的指針向後移動一步。因此下一次循環中會獲得數組的下一個元素,直到數組的結尾才中止循環,結束數組的遍歷。
第二種方式:
foreach(array_expression as $key=>$value){
//循環體
}
實例代碼:
複製代碼代碼以下:
<?php
//定義數組
$arr = array('http://www.jb51.net','腳本之家','PHP教程');
foreach($arr as $k=>$v){
echo $k."=>".$v."<br />";
}
?>
3、聯合使用list()、each()和while循環遍歷數組
each()函數須要傳遞一個數組做爲一個參數,返回數組中當前元素的鍵/值對,並向後移動數組指針到下一個元素的位置。
list()函數,這不是一個真正的函數,是PHP的一個語言結構。list()用一步操做給一組變量進行賦值。
實例代碼:
複製代碼代碼以下:
<?php
//定義循環的數組
$arr = array('website'=>'http://www.jb51.net','webname'=>'腳本之家')
while(list($k,$v) = each($arr)){
echo $k.'=>'.$v.'<br />';
}
?> jb51.net
輸出結果爲:
website=>http://www.jb51.net
webname=>PHP程序員
總結:上述三種循環遍歷數組的方法中建議你們使用foreach語句循環遍歷數組,效率更高。