如何将PHP多维数组拆分为分类数组与按索引对齐的合集数组
PHP数组转换实现方案
完整实现代码
<?php // 你的原始数组 $choices = [ ['horror' => ["Rosemary's Baby","Cujo","Children Of The Corn", "Congo"]], ['romance' => ["Sleepless In Seattle", "You've Got Mail", "Crazy Rich Asians", "The Notebook"]], ['sci_fi' => ["Alien", "Star Trek", "Star Wars", "Space Invaders"]] ]; $genres = []; $categoryLists = []; foreach ($choices as $categoryItem) { // 提取当前分类名称 $currentGenre = key($categoryItem); $genres[] = $currentGenre; // 收集每个分类下的影片列表 $categoryLists[] = $categoryItem[$currentGenre]; } // 转置数组得到按索引对齐的集合 $collections = array_map(null, ...$categoryLists); // 可取消注释打印验证结果 // print_r($genres); // print_r($collections); ?>
实现说明
- 遍历原始
$choices数组时,用key()函数直接提取每个子数组的唯一键名,依次存入$genres数组即可得到分类名称数组。 - 同时把每个分类对应的影片列表存入临时数组
$categoryLists。 - 利用PHP原生
array_map的特性:首个参数传入null时,会将后续传入的所有数组按索引位置对齐,相同索引的元素会被组合为新的子数组,配合展开运算符...把临时数组的元素作为参数传入,一步就能得到目标$collections数组。
如果你的业务场景中存在不同分类下影片数量不一致的情况,缺少元素的位置会自动填充为null,你可以根据需求后续追加过滤空值的逻辑即可。
内容的提问来源于stack exchange,提问作者EastsideDev
相关产品推荐
相关产品推荐

