foreach 问题求解

Bincker 2011-08-18 04:02:04
<?php
$testarr = array('a','b','c');

foreach( $testarr as $k=>&$v ) {
echo $k.'->'.$v."<br>";
}
echo "-------<br>";
// echo $k;//2
// echo $v;//c
//echo $testarr[2];
foreach( $testarr as $k=>$v ) {
print_r($v);
echo $k.'->'.$v."<br>";
}



输出结果是

0->a
1->b
2->c
-------
0->a
1->b
2->b


为什么不是

0->a
1->b
2->c
-------
0->a
1->b
2->c

求解.....
...全文
101 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xieleri 2011-09-01
  • 打赏
  • 举报
回复
foreach( $testarr as $k=>&$v )
用了&$v ,改变了数组的值
小在在 2011-08-18
  • 打赏
  • 举报
回复
第一次循环使用了取地址操作符

foreach( $testarr as $k=>&$v )

可能这样改变了数组最后元素的值
davy152486 2011-08-18
  • 打赏
  • 举报
回复
第一个循环中你用的是引用变量,在循环下边unset($v)就ok了 这应该是属于php的一个缺陷吧 $v变成了全局变量。第二个循环print_r($testarr);就能看到$testarr[2]在不断的改变
小在在 2011-08-18
  • 打赏
  • 举报
回复
你第一次使用了地址操作符:

foreach( $testarr as $k=>&$v ) 注意其中的‘ & ’;

可能这样改变了数组最后元素的值。。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧