php陣列中常用的多種遍歷方式

林堯彬發表於2020-04-04
  1 <?php
  2 /* 1使用 for語句迴圈遍歷陣列
  3     a 其他語句(只有這一種方式)
  4 *   b. php  這種方式不是我們首選方式
  5     c陣列必須是索引陣列,而且下標還必須是連續的才能遍歷
  6     (索引陣列下標還可以不連續, 陣列還有關聯陣列)
  7 *2 使用foreach 語句迴圈遍歷語句
  8   foreach(陣列變數 as變數值)
  9   
 10   {
 11       //迴圈體
 12   }
 13   a 迴圈次數由陣列的元素個數決定
 14   b //每次迴圈 都會將陣列中的元素分別賦值給後面的變數
 15   foreach(陣列變數as 下標變數=>值變數)
 16 
 17 *3 while() list() echo 組合迴圈遍歷陣列
 18 echo()函式 ,a需要一個陣列作為引數;
 19 b返回來的也是陣列
 20 c  返回來的陣列是0,1,key value 四個下標(固定的)
 21    0 和 key下標是當前引數陣列元素的鍵
 22    1和value下標是當前引數陣列元素的值
 23 d預設當前元素是一個元素 
 24 e每執行一次後就會將當前元素向後移動
 25 f如果到最後的元素在執行這個函式,則返回false
 26 list()函式
 27 
 28 
 29  a. list()=array();需要將一個陣列賦值給這個函式
 30 b.這個陣列中的元素個數要和list函式中的引數個數相同
 31 c.陣列中的每個元素值會賦值給list函式中的每個引數,list將買個引數轉為變數
 32 d .list只能接受索引陣列
 33 e 按照索引下標的順序
 34 */
 35 
 36 list($name,$age,$sex)=array("張三","10","nan");
 37 list(,,$sex)=array("張三","10","nan");
 38 list($name,,$sex)=array("張三","10","nan");
 39 echo $name."<br>";
 40 echo $age."<br/>";
 41 echo $sex."<br/>";
 42 
 43   $ip="192.168.1.128";
 44    $ips=explode(".","$ip");
 45    print_r($ips);
 46 
 47    list(,,,$num2)=explode(".","$ip");
 48    
 49    
 50    echo $num2."<br/>";
 51 
 52 $user=array(1,"張三","40","李四"=>"nan","abcd@sina.com" );
 53 
 54 for($i=0;$i<count($user);$i++)
 55 {
 56     //echo "\$user[{$i}]=".$user[$i]."<br/>";
 57 }
 58 
 59 foreach( $user as $key =>$val)
 60 {
 61 echo $key."=========>".$val."<br/>";
 62 //echo $val."<br/>";
 63 }
 64 
 65 
 66 
 67 //三維陣列的遍歷 
 68 $info=array(
 69         "user"=>array(
 70                 //$user[0]
 71                 array(1, "zansan", 10, "nan"),
 72                 //$user[1][1]
 73                 array(2, "lisi", 20, "nv"),    //$user[1]
 74                 //$user[2]
 75                 array(3, "wangwu", 30, "nan")
 76         ),
 77         "score"=>array(
 78                 array(1, 100, 90, 80),
 79                 array(2, 99, 88, 11),
 80                 array(3, 10, 50, 88)
 81             ),
 82         "connect"=>array(
 83                 array(1, '110', 'aaa@bbb.com'),
 84                 array(2, '120', 'bbb@ccc.com'),
 85                 array(3, '119', 'ccc@ddd.com')    
 86             )
 87     );
 88 
 89 
 90    foreach ($info as $tableName=>$table)
 91    {
 92 
 93     echo'<table  align="center" width="500" border="1">';
 94        echo'<caption><h1>'.$tableName.'</h1></caption>';
 95        foreach($table as $row )
 96        {
 97 
 98            echo'<tr>';
 99            foreach($row as $col )
100                echo '<td>'.$col.'</td>';
101 
102                
103            echo'</tr>';
104        }
105        
106        echo'</table>';
107    }
108 //使用陣列的內部指標控制函式
109 //next(陣列);
110 //prev(陣列);
111 //reset(陣列);
112 //end(陣列);
113 //current(陣列);
114   $usedemo=array("id"=>1,"name"=>"zhangsan","age"=>10, "sex"=>"man"); 
115  // each($usedemo);//array([1]=>1 [value]=1 [0]=>id [key]=>id);
116 
117 while (list($key,$value)=each($usedemo))//array([1]=>1 [0]=1);
118 {
119     echo $key."=======".$value."<br/>";
120 }
121 reset($usedemo);
122 
123  while (list($key,$value)=each($usedemo))//array([1]=>1 [0]=1);
124 {
125     echo $key."=======".$value."<br/>";
126 }
127 reset($usedemo);
128 next($usedemo);
129 next($usedemo);
130 while (list($key,$value)=each($usedemo))//array([1]=>1 [0]=1);
131 {
132     echo $key."=======".$value."<br/>";
133 }
134 echo"<br><br><br><br><br>";
135 reset($usedemo);
136 
137 print_r(current($usedemo));
138 
139 while($arr=each($usedemo))
140 {
141 echo $arr[0]."=>".$arr[1]."<br/>";
142 
143 echo $arr["key"]."----->".$arr["value"]."<br/>";
144 }
145 
146 $a=each($usedemo);
147 
148 print_r($a);//Array ( [1] => 1 [value] => 1 [0] => id [key] => id )
149 
150 $b=each($usedemo);
151 print_r($b);
152 
153 $c=each($usedemo);
154 print_r($c);
155 
156 $d=each($usedemo);
157 print_r($d);
158 
159 $e=each($usedemo);
160 var_dump($e);
161 ?>

 

轉載於:https://www.cnblogs.com/58top/archive/2013/02/22/2922226.html

相關文章