牛骨文教育服务平台(让学习变的简单)
博文笔记

PHP7和PHP5.6在foreach里面使用current的区别

创建时间:2017-01-16 投稿人: 浏览次数:1847

脚本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);
// current里面的值并没有改变,数组$arr的指针并没有移动
foreach ($arr as $key => $value) {
    echo "第" . $key . "次循环
";
    echo "foreach中的value:" . $value . "
";
    echo "current中的value:" . current($arr) . "
";
    echo "
";
}

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);
// 加入next函数移动数组$arr指针,current里面的值遍历输出
foreach ($arr as $key => $value) {
    echo "第" . $key . "次循环
";
    echo "foreach中的value:" . $value . "
";
    echo "current中的value:" . current($arr) . "
";
    echo "
";
    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中并不会移动数组的指针。
踩到坑,以儆效尤…

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。