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

如何用PHP按language匹配并合并数组slug生成新数组?

解决方案:按语言匹配合并两个数组的Slug

别担心,这个需求完全能实现!我帮你整理了一个清晰的方案,哪怕是刚接触数组操作也能轻松上手~

核心思路

我们可以分成两步来完成:

  • 先把分类数组转换成「语言 => 分类Slug」的映射表,这样能快速根据语言找到对应的分类Slug
  • 再遍历产品数组,通过语言匹配到分类Slug,拼接成「分类Slug/产品Slug」的格式,存入结果数组

代码实现(PHP示例)

假设你的两个数组分别是$categorySlugs(分类数组)和$productSlugs(产品数组),代码如下:

// 第一步:构建分类Slug的语言映射表
$categorySlugMap = [];
foreach ($categorySlugs as $categoryItem) {
    $categorySlugMap[$categoryItem['language']] = $categoryItem['translation'];
}

// 第二步:遍历产品数组,合并Slug生成结果
$result = [];
foreach ($productSlugs as $productItem) {
    $currentLang = $productItem['language'];
    // 先检查该语言在分类映射表中是否存在,避免报错
    if (isset($categorySlugMap[$currentLang])) {
        $result[$currentLang] = $categorySlugMap[$currentLang] . '/' . $productItem['translation'];
    }
}

// 输出结果
print_r($result);

代码说明

  • 第一步的映射表转换:把原来的索引数组转成关联数组,这样后续根据语言查找分类Slug的速度非常快(时间复杂度O(1)),比每次循环查找效率高很多
  • 第二步的isset判断:如果某个语言只在产品数组里存在、但分类数组没有对应项,这段判断能避免出现「未定义索引」的错误,让代码更健壮
  • 如果能保证两个数组的语言是完全一一对应的,那isset判断可以省略,但保留会更稳妥

运行这段代码后,你就能得到期望的结构:

Array(
    'de' => 'blanko/ettiketten-xxx',
    'en' => 'white/labels-xxxx',
    'es' => 'blanco/etiquetas-xxxx',
    'fr' => 'vierges/etiquettes-xxx',
    'it' => 'bianche/etichette-xxxx'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:24:30