是否存在可通过回调函数获取键来索引数组的PHP内置函数?
PHP是否存在对应功能的内置函数
PHP目前(截至PHP 8.3版本)没有单独的内置函数可以直接实现你描述的「传入数组和键生成回调、返回以回调结果为键的关联数组」需求,你自己写的array_index实现就是最优的原生实现方案。
可选的原生函数组合替代方案
你可以用array_combine+array_map组合实现类似效果,代码如下:
$result = array_combine( array_map($getKey, $values), $values );
该方案存在两个明显缺陷:
- 性能不如自定义实现:需要先遍历数组生成键数组,再遍历第二次完成数组合并,大数据量下性能差距更明显
- 异常行为不符合预期:如果回调返回了重复的键,
array_combine会直接抛出警告并终止执行,而自定义的foreach实现会默认用后出现的元素覆盖先出现的同键元素,行为可预期
补充说明
部分PHP框架已经内置了该功能的封装,比如Laravel框架的集合类提供的keyBy()方法,逻辑和你写的自定义函数完全一致,但属于框架实现,不属于PHP原生能力。
内容的提问来源于stack exchange,提问作者BenMorel
相关产品推荐
相关产品推荐

