PHP如何将taxonomies数组内容匹配添加到postTypes数组的对应属性中
该需求完全可以通过foreach循环实现,实现逻辑简单清晰,具体代码如下:
基础实现代码
<?php // 你的原始数组 $taxonomies = [ 'genres' => [ 'label' => 'Genres', 'value' => 'genres' ], 'movie_tags' => [ 'label' => 'Movie Tags', 'value' => 'movie_tags' ], 'portfolio_category' => [ 'label' => 'Portfolio Categories', 'value' => 'portfolio_category' ] ]; $postTypes = [ 'movies' => ['genres', 'movie_tags'], 'portfolio' => ['portfolio_category'] ]; // 合并逻辑 $result = []; foreach ($postTypes as $postTypeKey => $taxonomyKeys) { foreach ($taxonomyKeys as $taxKey) { // 用分类法键名直接从$taxonomies取对应配置,追加到结果数组 $result[$postTypeKey][] = $taxonomies[$taxKey]; } } // 打印结果验证 print_r($result);
运行上述代码输出的结构和你需要的目标结构完全一致。
增加健壮性的优化版本
如果存在部分分类法键名在$taxonomies中不存在的场景,可以加判断避免PHP报错:
$result = []; foreach ($postTypes as $postTypeKey => $taxonomyKeys) { foreach ($taxonomyKeys as $taxKey) { // 先判断对应的分类法配置是否存在,存在才塞入结果 if (isset($taxonomies[$taxKey])) { $result[$postTypeKey][] = $taxonomies[$taxKey]; } } }
内容的提问来源于stack exchange,提问作者CyberJ
相关产品推荐
相关产品推荐

