加深对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的值

相关文章
相关标签/搜索