欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP中foreach循環(huán)中使用引用要注意的地方

 更新時間:2011年01月02日 13:30:01   作者:  
發(fā)現(xiàn)了一個容易出錯,但是不懂得原理卻解釋不明白的問題,碰到類似問題的朋友可以參考下。
復(fù)制代碼 代碼如下:

foreach ($array as &$row) {
$row = explode('/', $row);
}
foreach ($array as $row) {
//do something
}

這么寫,在第二個循環(huán)會出邏輯錯誤,加入第二個循環(huán)中do something的地方是輸出$row,循環(huán)到最后一個的時候的輸出是倒數(shù)第二個元素,而不是最后一個

要這么寫
復(fù)制代碼 代碼如下:

foreach ($array as &$row) {
$row = explode('/', $row);
}
unset($row);
foreach ($array as $row) {
//do something
}

或者第一個循環(huán)這么寫
復(fù)制代碼 代碼如下:

foreach ($array as $key => $row) {
$array[$key] = explode('/', $row);
}


說一下原理
第一個循環(huán)使用了引用,循環(huán)結(jié)束后,$row引用的是$array數(shù)組的最后一個元素,當(dāng)開始第二個循環(huán)的時候,$row變量每次循環(huán)都會被賦一個新值,在php中,如果一個內(nèi)存空間是被引用的,那么當(dāng)改變它的時候是直接改變這塊內(nèi)存空間的值,也就是說,當(dāng)?shù)诙€foreach的第一次循環(huán),$array的最后一個元素的值就被改變?yōu)?array的第一個元素的值,第二次循環(huán)的時候,改變?yōu)榈诙€元素的值,倒數(shù)第二次循環(huán)的時候,被改變?yōu)榈箶?shù)第二個元素值,而最后一次循環(huán)的時候得道的值必然是那個倒數(shù)第二個值
當(dāng)然,如果php的for循環(huán)有作用域的話,也不會出現(xiàn)此問題.....

相關(guān)文章

  • Zend studio文件注釋模板設(shè)置方法

    Zend studio文件注釋模板設(shè)置方法

    這篇文章主要介紹了Zend studio中新建文件注釋、函數(shù)注釋、代碼塊等模板的實(shí)例
    2013-09-09
  • php中數(shù)據(jù)格式判斷方法總結(jié)

    php中數(shù)據(jù)格式判斷方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了php中數(shù)據(jù)格式判斷方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • 將IP地址轉(zhuǎn)換為整型數(shù)字的PHP方法、Asp方法和MsSQL方法、MySQL方法

    將IP地址轉(zhuǎn)換為整型數(shù)字的PHP方法、Asp方法和MsSQL方法、MySQL方法

    本篇文章是對IP地址轉(zhuǎn)換為整型數(shù)字的PHP方法、Asp方法和MsSQL方法、MySQL方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • php中常見的sql攻擊正則表達(dá)式匯總

    php中常見的sql攻擊正則表達(dá)式匯總

    這篇文章主要介紹了php中常見的sql攻擊正則表達(dá)式,實(shí)例匯總了針對各種常見的SQL語句及正則表達(dá)式原理的分析與應(yīng)用,對于PHP程序設(shè)計(jì)的安全來說具有很好的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • php中socket通信機(jī)制實(shí)例詳解

    php中socket通信機(jī)制實(shí)例詳解

    這篇文章主要介紹了php中socket通信機(jī)制,講述了socket通信機(jī)制的原理,并以實(shí)例形式較為詳細(xì)的分析了socket通信機(jī)制的用法,需要的朋友可以參考下
    2015-01-01
  • PHP多個文件上傳到服務(wù)器實(shí)例

    PHP多個文件上傳到服務(wù)器實(shí)例

    這篇文章主要介紹了PHP多個文件上傳到服務(wù)器的實(shí)現(xiàn)方法,以實(shí)例形式詳細(xì)講解了多文件傳遞過程中的數(shù)組應(yīng)用及數(shù)據(jù)遍歷上傳等技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • PHP與MySQL開發(fā)的8個技巧小結(jié)

    PHP與MySQL開發(fā)的8個技巧小結(jié)

    LAMP 架構(gòu)的網(wǎng)站,我以前注重的多是安裝/配置方面的,講述開發(fā)的相對較少,因?yàn)樽约簭氖麻_發(fā)也少??戳艘院?,頗有啟發(fā),以前開發(fā)中遇到的一些問題,迎刃而解。所以翻譯出來和大家共享。
    2010-12-12
  • php常用hash加密函數(shù)

    php常用hash加密函數(shù)

    這篇文章主要介紹了php常用hash加密函數(shù),以實(shí)例形式詳細(xì)分析了PHP的hash加密函數(shù)用法,代碼中備有詳盡的注釋,便于理解,需要的朋友可以參考下
    2014-11-11
  • PHP使用數(shù)組實(shí)現(xiàn)矩陣數(shù)學(xué)運(yùn)算的方法示例

    PHP使用數(shù)組實(shí)現(xiàn)矩陣數(shù)學(xué)運(yùn)算的方法示例

    這篇文章主要介紹了PHP使用數(shù)組實(shí)現(xiàn)矩陣數(shù)學(xué)運(yùn)算的方法,結(jié)合具體實(shí)例形式分析了php基于數(shù)組實(shí)現(xiàn)矩陣表示與運(yùn)算的相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • 利用PHP判斷是手機(jī)移動端還是PC端訪問的函數(shù)示例

    利用PHP判斷是手機(jī)移動端還是PC端訪問的函數(shù)示例

    在平常工作開發(fā)中,我們通常需要開發(fā)出PC端和移動端兩個不同的系統(tǒng),從而根據(jù)訪問端的不同進(jìn)入到不同的操作界面中。下面這篇文章主要給大家介紹了關(guān)于利用PHP判斷是手機(jī)移動端還是PC端訪問的函數(shù)的相關(guān)資料,需要的朋友可以參考下。
    2017-12-12

最新評論