程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php數組遍歷

php數組遍歷

編輯:關於PHP編程

php數組遍歷


1, B=>1, C=>1, D=>1);
foreach($array as $key => $value){
    if($key == B){
        $array[A] = CHANGE;
        $array[D] = CHANGE;
        print_r($array);
        echo '
';
    }
    //如果想要打印CHNAGE,那麼可以使用
    //if($array[$key] == 'CHANGE')
    //上面的取出的才是數組實際元素的值,使用$value取出的是array數組的原始值的副本
    if($value === CHANGE)  
        echo $value.'
';
}
print_r($array);
*/
/*
 * 結果是
 * Array ( [A] => CHANGE [B] => 1 [C] => 1 [D] => CHANGE ) 
   Array ( [A] => CHANGE [B] => 1 [C] => 1 [D] => CHANGE )
 * 
 */

$array = array(A=>1, B=>1, C=>1, D=>1);
foreach($array as $key => $value){
    if($key == B){
        $array[A] = CHANGE;
        $array[D] = CHANGE;
        print_r($array);
        echo '
';
    }
    //如果想要打印CHNAGE,那麼可以使用
    if($array[$key] == 'CHANGE')
        echo $value.'
';
}
print_r($array);
/*
 * 結果是
 * Array ( [A] => CHANGE [B] => 1 [C] => 1 [D] => CHANGE ) 
   1(這裡的1是數組原始的鍵對應的值)
   Array ( [A] => CHANGE [B] => 1 [C] => 1 [D] => CHANGE )
 */

 

注意:除非數組被引用,foreach操作的是執行數組的一個拷貝,不是數組本身,而且在遍歷的過程中對數組元素的修改不會影響到該副本(感覺就像在遍歷之前就將數組進行了一次拷貝,遍歷時操作的是數組副本)。foreach對數組指針有些副作用,除非對其重置,在 foreach 循環中或循環後都不要依賴數組指針的值。只要在foreach中,直接按照鍵取$array中的元素進行各種判斷賦值操作就可以了。


參見php foreach手冊

foreach 語法結構提供了遍歷數組的簡單方式。foreach 僅能夠應用於數組和對象,如果嘗試應用於其他數據類型的變量,或者未初始化的變量將發出錯誤信息。有兩種語法:

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

第一種格式遍歷給定的 array_expression 數組。每次循環中,當前單元的值被賦給 $value(創建一個副本) 並且數組內部的指針向前移一步(因此下一次循環中將會得到下一個單元)。

第二種格式做同樣的事,只除了當前單元的鍵名也會在每次循環中被賦給變量 $key(創建一個副本)。

Note:

當 foreach 開始執行時,數組內部的指針會自動指向第一個單元。這意味著不需要在 foreach 循環之前調用 reset() 。

由於 foreach 依賴內部數組指針,在循環中修改其值將可能導致意外的行為。

可以很容易地通過在 $value 之前加上 & 來修改數組的元素。此方法將以引用賦值而不是拷貝一個值。

注意:數組最後一個元素的 $value 引用在 foreach 循環之後仍會保留。建議使用 unset() 來將其銷毀。



 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved