1、再次理解两种语法格式
结果:
如果仅仅想获得到数组每个单元的key
结果:
打印的还是值,按照foreach的第一种语法格式
as后边不管你写的是$value,还是$key,都是把数组当前单元的值赋给该变量,不是你想让它代表什么,它就代表什么
那如果这么写呢?
结果:
根本没有这种语法格式
2、foreach循环的时候从数组的第一个单元开始,逐个读出数组的每个单元,把单元的键赋给$k,值赋给$v ,$k和$v仅仅是一个临时变量
如何理解$k和$v仅仅是一个临时变量呢,先来看一个案例,我们慢慢分析
请用foreach循环,把$arr每个单元的值变成原来的2倍
错解①:
错解②:
结果:
正解①:
结果:
正解②:传入&
结果:
原因分析:
$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的值
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。