foreach循環時動態往數組裡添加資料,有一次做專案中,foreach的時候需要動態往數組裡添加資料(我們這裡隨便舉個例子)
結果:哎
結果:哎
結果:哎
奇了怪了,這說明foreach循環時可以動態的往數組裡添加數據,為什麼$arr的數據確實被添加上了,但是沒有被foreach循環出來呢?網上查找得知,foreach循環的其實是數組的拷貝,而不是該數組本身,如果是數組拷貝的話,肯定是改變數組之前進行的拷貝,根據運行結果得知
雖然循環中確實改變了原有的數組,但循環的是拷貝的數組(也就是老的數組),所以你無法循環到新添加的元素好吧,暫且忍了
如果foreach的時候用引用賦值,新添加的數據就可以被循環出來了 結果:
而foreach($arr as &$v){···}的時候,此方法將以引用賦值而不是拷貝一個值,$v和$arr [$k]指向同一記憶體位址,此時foreach循環的是原始數組, 數組的指標也是在原始數組中移動的,所以新加入的資料可以被循環出來,值的變化也直接影響數組本身的值那既然&的時候,foreach直接循環的是原數組,那我這樣呢?
$arr[$k]和$v同時指向$arr[$k]的記憶體位址,即便是unset($v),只是刪除了$v對記憶體空間的引用,並沒有刪除$arr[$k]對記憶體位址的引用,所以$arr[$k]依然健在,$ arr自然也沒有變化,所以應該是這樣
結果:
還有一點要注意:&$k什麼結果🎜🎜被引用,壓根就沒有這種文法格式🎜 🎜 以上就介紹了foreach循環時動態往數組裡添加數據,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。 🎜 🎜 🎜