您好,匿名用户
随意问技术百科期待您的加入

php如何移动数组内部指针

0 投票

php的数组都有一个内部指针,指向数组的元素,初始化的时候是第一个,我要便利数组,让内部指针逐个移动

$arr = array ('a', 'b', 'c', 'd', 'e');
foreach ($arr as $k => $v) {
    $curr = current($arr);
    echo "{$k} => {$v} -- {$curr}\n";
}

得到结果是

0 => a -- b
1 => b -- b
2 => c -- b
3 => d -- b
4 => e -- b

内部指针向后移动了一位就再也没动过了。。。
foreach对这个数组做了什么呢?为什么呢?
我要让指针遍历数组,得到如下结果改怎么做呢?

0 => a -- a
1 => b -- b
2 => c -- c
3 => d -- d
4 => e -- e
用户头像 提问 2013年 10月28日 @ Taric 上等兵 (184 威望)
分享到:

1个回答

0 投票
 
最佳答案

这个问题我在bugs.php.net上回答过: https://bugs.php.net/bug.php?id=63752

1. at the beginning of foreach: ZEND_FE_RESET which increase the refoucnt of $a
2. then FE_FETCH, reset internal pointer of $a
3. then current, current declared to accept a reference, but $a is not a ref and refcount > 1 , then -> separation

用户头像 回复 2013年 10月25日 @ Nidalee 上等兵 (346 威望)
选中 2013年 9月7日 @Taric
提一个问题:

相关问题

0 投票
1 回复 32 阅读
用户头像 提问 2012年 12月1日 @ Artemis 上等兵 (162 威望)
+2 投票
1 回复 50 阅读
用户头像 提问 2013年 1月26日 @ Sona 上等兵 (306 威望)
0 投票
1 回复 27 阅读
0 投票
1 回复 47 阅读
用户头像 提问 2012年 12月1日 @ Zyra 上等兵 (289 威望)
0 投票
1 回复 250 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...