php數組遍曆

來源:互聯網
上載者:User

標籤:php

<?php/* * 此程式是對php數組的操作,主要是在遍曆時修改數組的值 *//*$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 '<br />';    }    //如果想要列印CHNAGE,那麼可以使用    //if($array[$key] == 'CHANGE')    //上面的取出的才是數組實際元素的值,使用$value取出的是array數組的原始值的副本    if($value === "CHANGE")          echo $value.'<br />';}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 '<br />';    }    //如果想要列印CHNAGE,那麼可以使用    if($array[$key] == 'CHANGE')        echo $value.'<br />';}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)    statementforeach (array_expression as $key => $value)    statement

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

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

Note:

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

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

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

<?php$arr  = array( 1 ,  2 ,  3 ,  4 );foreach ( $arr  as & $value ) {     $value  =  $value  *  2 ;}// $arr is now array(2, 4, 6, 8)unset( $value );  // 最後取消掉引用?>

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





著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

php數組遍曆

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.