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

PHP中如何将月份编号数组与月份名称数组合并匹配?

实现PHP数组月份编号与名称的匹配合并

嘿,这里有几种实用的方法帮你把选中的月份编号对应到名称,生成目标数组$outputArr:

方法一:用array_map快速实现(简洁首选)

这种方法一行核心代码就能搞定,非常适合不需要额外逻辑的场景:

$monthsNumber = array(0 => 2, 1 => 4, 2 => 5);
$monthsName = array(1 => 'January', 2 => 'February', 3 => 'March', 4 => 'April', 5 => 'May', 6 => 'June', 7 => 'July', 8 => 'August', 9 => 'September', 10 => 'October', 11 => 'November', 12 => 'December');

// 遍历$monthsNumber,匹配对应月份名称
$outputArr = array_map(function($num) use ($monthsName) {
    // 用null合并运算符处理不存在的编号,避免报错
    return $monthsName[$num] ?? null;
}, $monthsNumber);

// 打印结果验证
print_r($outputArr);

运行后你会得到:

Array
(
    [0] => February
    [1] => April
    [2] => May
)

小贴士:?? null是PHP7+的语法,如果你的版本较低,可以换成isset($monthsName[$num]) ? $monthsName[$num] : null来兼容。

方法二:用foreach循环(灵活可控)

如果需要对无效编号做自定义处理(比如返回提示文字),foreach循环会更灵活:

$outputArr = [];
foreach ($monthsNumber as $originalKey => $monthNum) {
    // 先检查编号是否在$monthsName中存在
    if (isset($monthsName[$monthNum])) {
        $outputArr[$originalKey] = $monthsName[$monthNum];
    } else {
        // 自定义无效编号的返回值,比如提示文字
        $outputArr[$originalKey] = '无效月份编号';
    }
}

print_r($outputArr);

这种方法的好处是你可以在循环里加入任意校验逻辑,比如判断编号是否在1-12之间,完全按需调整。

方法三:用array_fill_keys + array_intersect_key(适合不需要保留原键的场景)

如果不介意目标数组的键和$monthsName保持一致(而不是$monthsNumber的原键),可以用这种组合:

// 把选中的编号转成键数组
$selectedKeys = array_fill_keys($monthsNumber, true);
// 取两个数组键的交集,得到对应名称
$outputArr = array_intersect_key($monthsName, $selectedKeys);

// 如果需要重新索引成连续数字键,用array_values
$outputArr = array_values($outputArr);

这个方法的优势是代码更简洁,但会丢失$monthsNumber的原键,适合对键没有要求的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:19:20