foreach 循环实例用法
在PHP中的foreach是用来进行循环对一个数组的所有元素。作者的foreach基本语法如下:
代码如下 | 复制代码 |
FOREACH ($array_variable as $value) or FOREACH ($array_variable as $key => $value) |
在这两种情况下,多次[代码执行]将被处死是等于在$ array_variable数组元素的个数。
让我们来看一个例子。假设我们有下面的代码段:
代码如下 | 复制代码 |
$array1 = array(1,2,3,4,5); FOREACH ($array1 as $abc) { print "new value is " . $abc*10 . " "; } |
输出结果
代码如下 | 复制代码 |
new value is 10 |
上面是我们对foreach常常使用的方法,下面再看实例
代码如下 | 复制代码 |
$a = array(1, 2); |
两个的循环的本意可能是: 第一个循环需要在循环中修改元素的内容, 所以使用引用; 但第二个循环只是把 $r 当作一个临时变量. 可是, 为什么 $a[1] 的值发生了改变呢?
当对 $a 的迭代完成后, $r 是 $a[1] 的引用, 改变 $r 的值, 就是改变 $a[1]. 这时, 你可以会奇怪, 代码中并没有修改 $r, 也没有修改 $a[1] 呀?
其实, foreach 是操作的是数组的拷贝, 所以, 后一个迭代相当于:
代码如下 | 复制代码 |
for($i=0; $i } |
为了避免这种情况, 应该在第一个迭代之后, 执行
代码如下 | 复制代码 |
unset($r); |
从当前环境中删除 $r 这个变量(引用变量).
即使不是前面的例子, 在第一个迭代之后, 仍然十分可能再执行类似的语句:
代码如下 | 复制代码 |
$r = 123; |
循环变量一般是临时变量, 同一个变量名在代码不同的地方表示不同的东西, 但变量的作用域又存在于循环之外. 这就是这种作用域规则的坏处, 加上”变量不声明即使用”的坏外, 再加上变量无类型的坏处.
所以, 在 PHP 中使用引用变量, 应该在引用使用完之后, 应该 unset(). 所有变量在使用之前应该先 unset().
总结:
PHP 引用有些类似 C 语言指针, 但一些重要的特性和 C 语言指针不一样, 如果不注意, 会导致程序 BUG. foreach 操作的是数组或对象的拷贝, 但 PHP5, 可以使用引用操作对象元素本身
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔