加深對foreach的理解

一、再次理解兩種語法格式數組

clipboard.png

結果:spa

clipboard.png

若是僅僅想得到到數組每一個單元的keyip

clipboard.png

結果:內存

clipboard.png

打印的仍是值,按照foreach的第一種語法格式it

clipboard.png

as後邊無論你寫的是$value,仍是$key,都是把數組當前單元的值賦給該變量,不是你想讓它表明什麼,它就表明什麼class

那若是這麼寫呢?變量

clipboard.png

結果:cli

clipboard.png

根本沒有這種語法格式foreach

二、foreach循環的時候從數組的第一個單元開始,逐個讀出數組的每一個單元,把單元的鍵賦給$k,值賦給$v ,$k和$v僅僅是一個臨時變量
如何理解$k和$v僅僅是一個臨時變量呢,先來看一個案例,咱們慢慢分析循環

請用foreach循環,把$arr每一個單元的值變成原來的2倍

clipboard.png

錯解①:

clipboard.png

錯解②:

clipboard.png

結果:

clipboard.png

正解①:

clipboard.png

結果:

clipboard.png

正解②:傳入&

clipboard.png

結果:

clipboard.png

緣由分析:$k和$v都是臨時變量,foreach的時候,把每一個數組單元的鍵分別賦值給$k,把每一個數組單元的值分別賦給$v,相等於$v=$arr[$k],$v*2僅僅是改變了$v的值(非&傳遞),並不會影響到$arr[$k],天然也就不會影響到$arr而用第二種方法(引用)的時候,相等於$v=&$arr[$k],$arr[$k]和$v指向同一內存地址,$v*2天然就改變了$arr[$k]的值,也就改變了$arr的值

相關文章
相關標籤/搜索