PHP已废弃each()函数自定义替换实现myEach()代码正确性咨询
关于myEach函数返回数组的错误分析
这段代码存在错误,不符合PHP原生each()函数的返回值规范。
原生each()返回规则说明
PHP官方定义的each()执行成功时,返回的数组包含4个固定结构的元素:
- 数字索引
0存储当前元素的键名 - 数字索引
1存储当前元素的键值 - 关联键
key存储当前元素的键名 - 关联键
value存储当前元素的键值
问题代码的结构拆解
你提到的这段数组代码实际生成的结构如下:
[ 0 => $key, 1 => current($array), 2 => 'key', 'value' => current($array) ]
存在两处明显问题:
- 缺少关联键
key的定义:原生返回中$返回值['key']应该等于当前元素的键名$key,但这段代码没有对'key'关联键赋值,导致调用方通过'key'取键名时会得到未定义索引的报错。 - 多了无意义的数字索引
2元素:原生each()返回的数组不存在数字索引2,这段代码里把字符串'key'作为数字索引2的值存入,属于额外的无效内容。
正确写法参考
符合原生规范的数组定义应该调整为:
[$key, current($array), 'key' => $key, 'value' => current($array)]
内容的提问来源于stack exchange,提问作者leanhtai01
相关产品推荐
相关产品推荐

