为了账号安全,请及时绑定邮箱和手机立即绑定

求大牛详解each函数

求大牛详解each函数

PHP
Smart猫小萌 2019-03-13 21:18:19
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种方式

查看完整回答
反对 回复 2019-03-18
?
炎炎设计

TA贡献1808条经验 获得超4个赞

查看完整回答
反对 回复 2019-03-18
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

php执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。并且会返回为四个单元的数组,键名为0,1,key和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 507 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号