php 的each函数看不懂,求大神解答。
<?php
$people = array("a", "B", "C", "D");
print_r($people);
echo "<hr>";
print_r (each($people));
echo "<hr>";
print_r (each($people));
echo "<hr>";
print_r (each($people));
echo "<hr>";
print_r (each($people));
?>
最终结果如下Array ( [0] => a [1] => B [2] => C [3] => D )Array ( [1] => a [value] => a [0] => 0 [key] => 0 )Array ( [1] => B [value] => B [0] => 1 [key] => 1 )Array ( [1] => C [value] => C [0] => 2 [key] => 2 )为什么会有个value出现,还有key?我觉得自己没有看懂规则,所以求大神指导一下,本人小白。谢谢了 拜托
3 回答

呼唤远方
TA贡献1856条经验 获得超11个赞
each在php7.2已经被废弃,可以不用太关心。
each() 返回的是某个元素的key和value,并把指针指向下一个元素。
Array (
[1] => a
[value] => a
[0] => 0
[key] => 0
)
下标0和下标key其实都是数组当前指针对应的元素的key,因为你提供的数组,key是隐式的,所以会从0开头。比如我们提供一个显式的key
$arr = ['hello' => 'world', 'hi' => '原罪'];
print_r(each($arr));
print_r(each($arr));
答案是:
Array
(
[1] => world
[value] => world
[0] => hello
[key] => hello
)
Array
(
[1] => 原罪
[value] => 原罪
[0] => hi
[key] => hi
)
证明0和key的下标都是值原数组的key,而1和value都是指原数组的value。第二个print_r证明each()执行后会把指针往后移动。
所以一般有这种用法
$arr = ['a', 'b', 'c'];
while (list($key, $value) = each($arr)) {
$arr[$key] = $value . '_i';
}
print_r($arr); // ['a_i', 'b_i', 'c_i'];
这段代码从我的文章复制的遍历PHP数组的6种方式

梦里花落0921
TA贡献1772条经验 获得超6个赞
php执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。并且会返回为四个单元的数组,键名为0,1,key和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。
- 3 回答
- 0 关注
- 507 浏览
添加回答
举报
0/150
提交
取消