【问题标题】:Merge single PHP Array合并单个 PHP 数组
【发布时间】:2017-11-29 14:39:04
【问题描述】:

我有一个 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
           )
        )
    )

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

【问题讨论】:

  • 到目前为止你得到了什么代码?
  • 你尝试过什么吗?有什么代码可以提供吗?
  • 您将无法在 [options] 下拥有多个 [group] 键。每个数组中的键必须是唯一的。
  • 完全正确。数组键是唯一的。

标签: php arrays merge


【解决方案1】:

[options] 下不能有多个 [group] 键。每个数组中的键必须是唯一的。但是您可以通过简单的 foreach 循环将它们放入数字索引数组中。

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

这将产生与您想要获得的输出类似的输出,但[options] 中的键将只是01 等,这可能是您能够得到的最接近的输出获取该格式。

【讨论】:

    猜你喜欢
    • 2019-08-14
    • 2013-04-01
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    相关资源
    最近更新 更多