将一个多维数组附加到另​​一个数组元素并编码为json php

时间:2016-07-27 10:32:09

标签: php arrays json

我有两个多维数组,如下所示:

一个类别:

$categories = array (
        array("slug1", "label1"),
        array("slug2","label2"),
        array("slug3","label3"), 
        array("slug4","label4")
    );

和另一个子类别:

$subCategories = array (
        array("sub-slug1","sub-label1"),
        array("sub-slug2","sub-label2"),
        array("sub-slug3","sub-label3"), 
        array("sub-slug4","sub-label4")
    );

我只能为以下类别生成json:

foreach ($categories as $category) {

        $catArray[] = array("category-slug" => $category[0], "category-label" => $category[1], "subcategory-slug" => $subCategory[0], "subcategory-label" => $subCategory[1] );
    }
echo json_encode($catArray);

现在,我必须将整个子类别数组附加到其中一个类别,例如 slug1 ,以便格式变为:

array("category-slug" => $category[0], "category-label" => $category[1], "subcategory-slug" => $subCategory[0], "subcategory-label" => $subCategory[1] )

更新
输出应采用以下格式:

[
{
    "category-slug": "slug1",
    "category-label": "label1",
    "subcategory": [
    {
        "subcategory-slug": "sub-slug1",
        "subcategory-label": "sub-label1",
    },
    {
        "subcategory-slug": "sub-slug1",
        "subcategory-label": "sub-label1",
    },
    {
        "subcategory-slug": "sub-slug1",
        "subcategory-label": "sub-label1",
    },
    {
        "subcategory-slug": "sub-slug1",
        "subcategory-label": "sub-label1",
    }]
},
{
    "category-slug": "slug2",
    "category-label": "label2",
    "subcategory": []
},
{
    "category-slug": "slug3",
    "category-label": "label3",
    "subcategory": []
    }
},
{
    "category-slug": "slug4",
    "category-label": "label4",
    "subcategory": []    
    }
}
]

1 个答案:

答案 0 :(得分:0)

如果$categories$subCategories数组具有相同的项目顺序 - 使用以下方法就足够了:

$catArray = [];
foreach ($categories as $k => $category) {
    $catArray[] = [
        "category-slug" => $category[0],
        "category-label" => $category[1],
        "subcategory-slug" => $subCategories[$k][0],
        "subcategory-label" => $subCategories[$k][1]
    ];
}

echo json_encode($catArray, JSON_PRETTY_PRINT);

输出:

[
    {
        "category-slug": "slug1",
        "category-label": "label1",
        "subcategory-slug": "sub-slug1",
        "subcategory-label": "sub-label1"
    },
    {
        "category-slug": "slug2",
        "category-label": "label2",
        "subcategory-slug": "sub-slug2",
        "subcategory-label": "sub-label2"
    },
    {
        "category-slug": "slug3",
        "category-label": "label3",
        "subcategory-slug": "sub-slug3",
        "subcategory-label": "sub-label3"
    },
    {
        "category-slug": "slug4",
        "category-label": "label4",
        "subcategory-slug": "sub-slug4",
        "subcategory-label": "sub-label4"
    }
]