You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何使用array_map替代foreach提取关联数组的所有键名

问题原因

默认array_map只会传入数组的值给回调函数,你原写法中回调拿到的$item是$inventory的内层值(比如['Golden Delicious', 'Granny Smith','Fuji']这种索引数组),根本获取不到外层的字符串键名Apples/Oranges,所以你在回调里调用key()、array_key_first()读取的都是内层索引数组的键,自然输出0。

调整方案

要让回调拿到外层键名,可以同时把$inventory的键数组、值数组传入array_map,回调直接返回键即可:

// 匿名函数写法
$fruits = array_map(function($key, $value) {
    return $key;
}, array_keys($inventory), $inventory);

如果要保留你单独声明回调函数的写法,调整如下:

$fruits = array_map('fruitTypes', array_keys($inventory), $inventory);

function fruitTypes($key, $item) {
    // 直接返回传入的外层键即可
    return $key;
}

运行后$fruits就是你需要的['Apples','Oranges']结构。

补充说明:如果只是为了取数组的所有键,PHP原生提供了更简洁的array_keys($inventory)方法可以直接得到结果,上述写法仅为满足你练习array_map用法的需求。


内容的提问来源于stack exchange,提问作者EastsideDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:27:00