複製代碼 代碼如下:<?php
/* 數組的遍曆
*
* 1.使用for語句迴圈遍曆數組
* 1.其他語言(只有這一種方式)
* 2.PHP中這種方式不是首選的方式
* 3.數組必須是索引數組,而且下標必須是連續的。
* (索引數組下標可以不連續,數組還有關聯陣列,這兩種不能遍曆)
*
* 2.使用foreach語句迴圈遍曆數組
* foreacho(陣列變數 as 變數值){
* //迴圈體
* }
* 1.迴圈次數由數組的元素個數決定
* 2.每一次迴圈都會將數組中的元素分別賦值給後面變數
*
* foreach(陣列變數 as 下標變數=> 值變數){
* }
*
*
* 3.while() list() each() 組合迴圈遍曆數組
*
* each()函數:
* 1.需要一個數組作為參數
* 2.返回來的也是一個數組
* 3.返回來的數組是0,1,key,value四個下標(固定的)
* 0和key下標是當前參數數組元素的鍵
* 1和value下標是當前參數數組元素的值
* 4.預設當前元素就是第一個元素
* 5.每執行一次後就會將當前元素向後移動
* 6.如果到最後的元素再執行這個函數,則返回false
* list()函數:
* 1. list()=array();需要將一個數組賦值給這個函數
* 2.數組中的元素個數,要和list()函數中的參數個數相同
* 3.數組中的每個元素值會賦值list()函數中的每個參數,list()將每個參數轉為變數
* 4.list()只能接受索引數組
* 5.按索引的下標順序來給參數賦值
*
*
*
*/
//for語句遍曆數組
$user=array(1,"zhangsan",40,"nan");
for($i=0;$i<4;$i++)
{
echo"\$user[{$i}]=".$user[$i]."<br>";
}
//使用foreach
$user=array(1,"zhangsan",40,"nan");
foreach($user as $val)//$val是自訂變數
{
echo $val."<br>";//輸出與下標無關
}
foreach($user as $key=>$val)//$val $key 都是自訂變數
{
echo $key."=====>".$val."<br>";
}
//foreach遍曆多維陣列
$info=array(
"user"=>array(
//$user[0]
array(1, "zansan", 10, "nan"),
//$user[1][1]
array(2, "lisi", 20, "nv"), //$user[1]
//$user[2]
array(3, "wangwu", 30, "nan")
),
"score"=>array(
array(1, 100, 90, 80),
array(2, 99, 88, 11),
array(3, 10, 50, 88)
),
"connect"=>array(
array(1, '110', 'aaa@bbb.com'),
array(2, '120', 'bbb@ccc.com'),
array(3, '119', 'ccc@ddd.com')
)
);
foreach($info as $tableName=>$table)
{
echo '<table align="center" width="500" border="1">';
echo '<caption><h1>'.$tableName.'</h1></caption>';
foreach($table as $row)
{
echo '<tr>';
foreach($row as $col)
{
echo '<td>'.$col.'</td>';
}
echo '</tr>';
}
echo '</table>';
}
//each()的使用
$user=array("id"=>1,"name"=>"zhangsan","age"=>10,"sex"=>"nan");
$a=each($user);//Array ( [1] => 1 [value] => 1 [0] => id [key] => id ) 預設是第一個元素的值
print_r($a);
$b=each($user);
print_r($b);//Array ( [1] => zhangsan [value] => zhangsan [0] => name [key] => name ) 每執行一次,向後遍曆一個
$c=each($user);
print_r($c);//Array ( [1] => 10 [value] => 10 [0] => age [key] => age )
$d=each($user);
print_r($d);//Array ( [1] => nan [value] => nan [0] => sex [key] => sex )
$e=each($user);
var_dump($e);//bool(false) 當沒有元素時,返回的值
//each()配合while遍曆
$user=array("id"=>1,"name"=>"zhangsan","age"=>10,"sex"=>"nan");
while($arr=each($user))
{
//echo $arr[0]."====>".$arr[1]."<br>";//通過0,1 來顯示 鍵(下標) 和 值
echo $arr["key"]."===>".$arr["value"]."<br>";//通過key,value 來顯示 鍵 值
}
//list()函數的使用
list($name,$age,$sex)=array("zhangsan",10,"nnnnn");
echo $name."<br>";
echo $age."<br>";
echo $sex."<br>";
//另一種使用方法
list(,,$sex)=array("zhangsan",10,"nnnnn");
echo $sex."<br>";//只把性別轉換為變數
//ip判斷
$ip="192.168.1.128";
list(,,,$d)=explode(".",$ip);//explode表示用 . 來分隔,並返回一個數組
echo $d;//取出128
//list()只能接收索引數組的例子
$user=array("id"=>1,"name"=>"zhangsan","age"=>10,"sex"=>"nan");
list($key,$value)=each($user);//Array( [1]=>1 [0]=>id) 按照索引下標的順序給list中的參數賦值,所以先是 0鍵 然後是 1值
echo $key."--->".$value;
//while list() each() 組合使用
$user=array("id"=>1,"name"=>"zhangsan","age"=>10,"sex"=>"nan");
while(list($key,$value)=each($user))
{
echo $key."--->".$value."<br>";
}
//多次迴圈只顯示一次的解決方案
//使用數組的內部指標控制函數
//next(數組);數組指標移動到下一個
//prev(數組);數組指標移動到上一個
//reset(數組);數組指標移動到第一個(複位)
//end(數組);數組指標移動到最後一個
//current(數組);擷取當前元素的值,當前元素時指數組指標指向的元素。
//key(數組);擷取當前元素的索引值(下標)
$user=array("id"=>1,"name"=>"zhangsan","age"=>10,"sex"=>"nan");
while(list($key,$value)=each($user))
{
echo $key."--->".$value."<br>";
}
//在這裡將數組指標移動到第一個以下迴圈就能輸出
//reset($user)
while(list($key,$value)=each($user))//因為each()到最後一個返回false,所以迴圈直接跳出
{
echo $key."--->".$value."<br>";
}
while(list($key,$value)=each($user))//因為each()到最後一個返回false,所以迴圈直接跳出
{
echo $key."--->".$value."<br>";
}
echo current($user)."=====>".key($user);
?>