6.3.3 使用foreach語句遍歷數組的應用
使用foreach語句遍歷數組
?foreach循環結構:
–foreach僅用于數組,有兩種語法。
foreach (array_expression as $value)
…..statement
foreach (array_expression as $key => $value)…..statement
第一種格式遍歷給定的 array_expression 數組。每次循環中,當前單元的值被賦給 $value 并且數組內部的指針向前移一步
?第二種格式做同樣的事,只除了當前單元的鍵值也會在每次循環中被賦給變量 $key。
注:當 foreach 開始執行時,數組內部的指針會自動指向第一個單元。此外注意foreach 所操作的是指定數組的一個拷貝,而不是該數組本身。
<?php
$a=array(10,20,30,40,50,60);
foreach($a as $k=>$v) {
echo "$k => $v
";
}
?>
<?php
$wage = array( //將三個部門的工資表格存儲在三維數組$wage中
"市場部" => array( array(1, "高某", "市場部經理", 5000.00),
array(2, "洛某", "職員", 3000.00), array(3, "峰某", "職員", 2400.00)),
"產品部" => array( array(1, "李某", "產品部經理", 6000.00),
array(2, "周某", "職員", 4000.00), array(3, "吳某", "職員", 3200.00)),
"財務部" => array( array(1, "鄭某", "財務部經理", 4500.00),
array(2, "王某", "職員", 2000.00), array(3, "馮某", "職員", 1500.00))
);
//使用三層foreach語句嵌套遍歷三維數組,輸出三個表格
foreach( $wage as $sector => $table ) { //最外層foreach語句遍歷出三個表格,遍歷出鍵和值
echo '<table border="1" width="600" align="center">';
echo '<caption><h2> '.$sector.'10月份工資表 </h2></caption>';
echo '<tr bgcolor="#dddddd"><th>編號</th><th>姓名</th><th>職務</th><th>工資</th></tr>';
foreach( $table as $row ) { //中層foreach語句遍歷出每個表格中的行
echo '<tr>';
foreach($row as $col) { //內層foreach語句遍歷出每條記錄中的列值
echo '<td> '.$col.' </td>';
}
echo '</tr>';
}
echo '</table><br>';
}
test.php
<?php
/*
* 使用for遍歷數組
*
*
* 保證數組: 一定要是下標連續的索引數組
*
* 優點:
*
* 效率很高, 就是數組訪問方式, 只不過通過循環去取值
*
* count(數組) 獲取數組的長度, 是數組的實際元素的個數
*
*不足:
1. 數組下標不一定是連續的
* 2. 關聯數組for 不能遍歷出值
*
*
foreach() 語法
1.
foreach(數組 as 自定義變量) {
}
一、 數組有多少個元素, foreach就循環多少次
二、foreach會將數組中的元素 在每次循環中, 依次將元素的值給自定義的變量, 在每次循環中用到這個變量,即用到了當前的數組中的元素
2.
foreach(數組 as 下標變量 => 值變量) {
}
*
*/
/* $arr = array("one"=>"aa", "bb", "three"=>"cc", "dd", 9=>"ee", "ff", "four"=>"ggg", "hh", "xxx", "yyy", "zz");
foreach($arr as $kk => $vv) {
echo "{$kk} =============> {$vv} <br>";
}
*/
$group = [
"name"=>"第三組",
"price"=>888,
["name"=>"zs", "age"=>20, "sex"=>"男", "email"=>"aaa@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ls", "age"=>21, "sex"=>"女", "email"=>"bbb@bbb.com"],
["name"=>"ww", "age"=>22, "sex"=>"男", "email"=>"cccc@bbb.com"]
];
echo '<table border="1" width="800" align="center">';
echo '<caption><h1>數組轉為表格<h1></caption>';
foreach($group as $k=>$row) {
echo '<tr>';
if(is_array($row)) {
foreach($row as $col) {
echo '<td>'.$col.'</td>';
}
} else {
echo '<td colspan="4">'.$k.':'.$row.'</td>';
}
echo '</tr>';
}
echo '</table>';