3

1、再次理解两种语法格式

clipboard.png

结果:

clipboard.png

如果仅仅想获得到数组每个单元的key

clipboard.png

结果:

clipboard.png

打印的还是值,按照foreach的第一种语法格式

clipboard.png

as后边不管你写的是$value,还是$key,都是把数组当前单元的值赋给该变量,不是你想让它代表什么,它就代表什么

那如果这么写呢?

clipboard.png

结果:

clipboard.png

根本没有这种语法格式

2、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的值


web360
838 声望28 粉丝

大家都是凡人,难道你确定你是大神?


引用和评论

1 篇内容引用
0 条评论