合并单个PHP数组

时间:2017-11-29 14:39:05

标签: php arrays merge

我有一个包含以下内容的PHP数组 每篇文章都有一个订单号,并且可以有多个具有关联选项的组。我想在一个数组中组合相同的文章但是所有选项。

[0] => Array
    (
        [ordernumber] => SW10001.1
        [group_name] => Typ
        [option_name] => CD-12
    )

[1] => Array
    (
        [ordernumber] => SW10001.1
        [group_name] => Farbe
        [option_name] => Blau
    )

[2] => Array
    (
        [ordernumber] => SW10001.10
        [group_name] => Typ
        [option_name] => CD-15
    )

[3] => Array
    (
        [ordernumber] => SW10001.10
        [group_name] => Farbe
        [option_name] => Rot
    )

我需要像这样组合的数组:

[0] => Array
    (
        [ordernumber] => SW10001.1
        [options] => (
           [0] => (
              [group_name] => Typ
              [option_name] => CD-12
           )
           [1] => (
              [group_name] => Farbe
              [option_name] => Blau
           )
        )
    )

[1] => Array
    (
        [ordernumber] => SW10001.10
        [options] => (
           [0] => (
              [group_name] => Typ
              [option_name] => CD-15
           )
           [1] => (
              [group_name] => Farbe
              [option_name] => Rot
           )
        )
    )

//编辑:我刚刚将数组键更正为非唯一。

1 个答案:

答案 0 :(得分:0)

您无法在[group]下拥有多个[options]个密钥。每个数组中的键必须是唯一的。但是你可以将它们放在带有简单foreach循环的数字索引数组中。

foreach ($your_array as $item) {
    $ordernumber = array_shift($item);
    $result[$ordernumber]['ordernumber'] = $ordernumber;
    $result[$ordernumber]['options'][] = $item;
}

这会生成类似于您尝试获取的输出,但[options]中的键只有01等,这可能是你最接近的那种格式。