亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

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

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

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


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

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

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

    這篇文章主要介紹了php中常見(jiàn)的sql攻擊正則表達(dá)式,實(shí)例匯總了針對(duì)各種常見(jiàn)的SQL語(yǔ)句及正則表達(dá)式原理的分析與應(yīng)用,對(duì)于PHP程序設(shè)計(jì)的安全來(lái)說(shuō)具有很好的參考借鑒價(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多個(gè)文件上傳到服務(wù)器實(shí)例

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

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

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

    LAMP 架構(gòu)的網(wǎng)站,我以前注重的多是安裝/配置方面的,講述開(kāi)發(fā)的相對(duì)較少,因?yàn)樽约簭氖麻_(kāi)發(fā)也少。看了以后,頗有啟發(fā),以前開(kāi)發(fā)中遇到的一些問(wèn)題,迎刃而解。所以翻譯出來(lái)和大家共享。
    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ī)移動(dòng)端還是PC端訪問(wèn)的函數(shù)示例

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

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

最新評(píng)論