foreach 使用技巧

2021-06-22 03:24:13 字數 664 閱讀 3545

有段時間沒有寫部落格了,主要是實驗室裡事情太多。今天被乙個小問題糾結的了半天,不過最終還是解決了。

php裡面foreach大家都知道,有兩種形式。即

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

第二種格式做同樣的事,只除了當前單元的鍵名也會在每次迴圈中被賦給變數 $key。相當於$key是陣列的索引,$value是這個索引的值。

但是要注意: 除非陣列是被引用,foreach 所操作的是指定陣列的乙個拷貝,而不是該陣列本身。因此陣列指標不會被 each() 結構改變,對返回的陣列單元的修改也不會影響原陣列。不過原陣列的內部指標的確在處理陣列的過程中向前移動了。假定 foreach 迴圈執行到結束,原陣列的內部指標將指向陣列的結尾。

相當於foreach是乙個值傳遞而不是引用傳遞

但是我一開始沒有注意到,結果就悲劇了。

本來是這樣的,發現$con['checked']的值沒有改變

在php5之後,可以用引用的方法傳即

但這很有可能引發另外乙個問題,就是在其他的foreach中你也使用了&$con這個變數,這就可能會造成很多奇奇怪怪的問題而且難以發現。比我們常見的&$value這樣傳值。

更方便的我們可以這樣傳值安全無害輕鬆改。

提前終止forEach技巧,使用try catch

學習react優化效能的時候,在render之前,生命週期shouldcomponentupdate裡判斷前後兩次資料是否一致,使用了foreach巢狀if語句,如果滿足條件想直接break跳出foreach迴圈,但事實並沒有想的那麼簡單,直接丟擲異常。查閱資料原來 接著想了個乙個可以實現的辦法,具...

在Dictionary使用foreach的注意

最近在對的程式進行效能優化,在優化過程中用到了dictionary,在通過foreach將dictionary中的資料寫入資料庫時,遇到了這樣的錯誤 collection was modified enumeration operation may not execute.類似這樣的 diction...

在Dictionary使用foreach的注意

最近在對的程式進行效能優化,在優化過程中用到了dictionary,在通過foreach將dictionary中的資料寫入資料庫時,遇到了這樣的錯誤 collection was modified enumeration operation may not execute.類似這樣的 diction...