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
相关产品推荐
相关产品推荐

