脚本1
$arr = array(1,2,3,4,5,6,7,8,9);
var_dump(current($arr));
foreach ($arr as $key => $value) {
var_dump(current($arr));
break;
}
PHP7输出:
int(1)
int(1)
PHP5.6输出:
int(1)
int(2)
脚本2
$arr = array(1,2,3,4,5,6,7,8,9);
foreach ($arr as $key => $value) {
echo "第" . $key . "次循环\n";
echo "foreach中的value:" . $value . "\n";
echo "current中的value:" . current($arr) . "\n";
echo "\n";
}
PHP7输出如下:
第0次循环
foreach中的value:1
current中的value:1
第1次循环
foreach中的value:2
current中的value:1
第2次循环
foreach中的value:3
current中的value:1
第3次循环
foreach中的value:4
current中的value:1
第4次循环
foreach中的value:5
current中的value:1
第5次循环
foreach中的value:6
current中的value:1
第6次循环
foreach中的value:7
current中的value:1
第7次循环
foreach中的value:8
current中的value:1
第8次循环
foreach中的value:9
current中的value:1
PHP5.6输出如下:
第0次循环
foreach中的value:1
current中的value:2
第1次循环
foreach中的value:2
current中的value:2
第2次循环
foreach中的value:3
current中的value:2
第3次循环
foreach中的value:4
current中的value:2
第4次循环
foreach中的value:5
current中的value:2
第5次循环
foreach中的value:6
current中的value:2
第6次循环
foreach中的value:7
current中的value:2
第7次循环
foreach中的value:8
current中的value:2
第8次循环
foreach中的value:9
current中的value:2
脚本3
$arr = array(1,2,3,4,5,6,7,8,9);
foreach ($arr as $key => $value) {
echo "第" . $key . "次循环\n";
echo "foreach中的value:" . $value . "\n";
echo "current中的value:" . current($arr) . "\n";
echo "\n";
next($arr);
}
PHP7输出:
第0次循环
foreach中的value:1
current中的value:1
第1次循环
foreach中的value:2
current中的value:2
第2次循环
foreach中的value:3
current中的value:3
第3次循环
foreach中的value:4
current中的value:4
第4次循环
foreach中的value:5
current中的value:5
第5次循环
foreach中的value:6
current中的value:6
第6次循环
foreach中的value:7
current中的value:7
第7次循环
foreach中的value:8
current中的value:8
第8次循环
foreach中的value:9
current中的value:9
PHP5.6输出:
foreach中的value:1
current中的value:2
第1次循环
foreach中的value:2
current中的value:3
第2次循环
foreach中的value:3
current中的value:4
第3次循环
foreach中的value:4
current中的value:5
第4次循环
foreach中的value:5
current中的value:6
第5次循环
foreach中的value:6
current中的value:7
第6次循环
foreach中的value:7
current中的value:8
第7次循环
foreach中的value:8
current中的value:9
第8次循环
foreach中的value:9
current中的value:
可以看出,在PHP5.6中,foreach会移动一次数组的指针,而之后数组的指针并不随着foreach循环移动,在PHP7中此情况已经改善,在foreach中并不会移动数组的指针。
踩到坑,以儆效尤…