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

加深对foreach的理解

结果:

加深对foreach的理解

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

加深对foreach的理解

结果:

加深对foreach的理解

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

加深对foreach的理解

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

那如果这么写呢?

加深对foreach的理解

结果:

加深对foreach的理解

根本没有这种语法格式

2、foreach循环的时候从数组的第一个单元开始,逐个读出数组的每个单元,把单元的键赋给$k,值赋给$v ,$k和$v仅仅是一个临时变量
如何理解$k和$v仅仅是一个临时变量呢,先来看一个案例,我们慢慢分析

请用foreach循环,把$arr每个单元的值变成原来的2倍

加深对foreach的理解

错解①:

加深对foreach的理解

错解②:

加深对foreach的理解

结果:

加深对foreach的理解

正解①:

加深对foreach的理解

结果:

加深对foreach的理解

正解②:传入&

加深对foreach的理解

结果:

加深对foreach的理解

原因分析:
$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的值

相关文章:

  • 2021-08-14
  • 2021-12-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-16
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-05-09
  • 2021-10-29
  • 2021-09-14
  • 2022-12-23
  • 2022-12-23
  • 2022-01-24
相关资源
相似解决方案