【问题标题】:Flatten multidimensional array - PHP展平多维数组 - PHP
【发布时间】:2020-06-06 21:02:15
【问题描述】:

我需要将下面的多维数组展平

 Array
    (
        [0] => Array
            (
                [shipping] => Array
                    (
                        [shipping_address_nickname] => CHILD SHIPPING - MAIN
                        [shipping_first_name] => Harshana
                        [shipping_last_name] => Child Shipping
                        [shipping_company] => Home
                        [shipping_country] => LK
                        [shipping_address_1] => 236, Maimbula
                        [shipping_postcode] => 11880
                        [shipping_city] => Nittambuwa
                        [shipping_state] => 
                    )

            )

        [1] => Array
            (
                [shipping2] => Array
                    (
                        [shipping2_address_nickname] => CHILD - 1
                        [shipping2_first_name] => Child
                        [shipping2_last_name] => 1
                        [shipping2_company] => Child - 1
                        [shipping2_country] => LK
                        [shipping2_address_1] => 236, Maimbula
                        [shipping2_postcode] => 11880
                        [shipping2_city] => Nittambuwa
                        [shipping2_state] => 
                    )

            )

        [2] => Array
            (
                [shipping3] => Array
                    (
                        [shipping3_address_nickname] => 
                        [shipping3_first_name] => 
                        [shipping3_last_name] => 
                        [shipping3_company] => 
                        [shipping3_country] => 
                        [shipping3_address_1] => 
                        [shipping3_postcode] => 
                        [shipping3_city] => 
                        [shipping3_state] => 
                    )

            )

        [3] => Array
            (
                [shipping4] => Array
                    (
                        [shipping4_address_nickname] => 
                        [shipping4_first_name] => 
                        [shipping4_last_name] => 
                        [shipping4_company] => 
                        [shipping4_country] => 
                        [shipping4_address_1] => 
                        [shipping4_postcode] => 
                        [shipping4_city] => 
                        [shipping4_state] => 
                    )

            )

        [4] => Array
            (
                [shipping] => Array
                    (
                        [shipping_address_nickname] => HARSHANA
                        [shipping_first_name] => Harshana
                        [shipping_last_name] => Child Shipping
                        [shipping_company] => Home
                        [shipping_country] => LK
                        [shipping_address_1] => 236, Maimbula
                        [shipping_postcode] => 11880
                        [shipping_city] => Nittambuwa
                        [shipping_state] => 
                    )

            )

        [5] => Array
            (
                [shipping2] => Array
                    (
                        [shipping2_address_nickname] => 
                        [shipping2_first_name] => 
                        [shipping2_last_name] => 
                        [shipping2_company] => 
                        [shipping2_country] => 
                        [shipping2_address_1] => 
                        [shipping2_postcode] => 
                        [shipping2_city] => 
                        [shipping2_state] => 
                    )

            )

        [6] => Array
            (
                [shipping3] => Array
                    (
                        [shipping3_address_nickname] => PARENT 1
                        [shipping3_first_name] => Parent
                        [shipping3_last_name] => 1
                        [shipping3_company] => Parent - 1
                        [shipping3_country] => LK
                        [shipping3_address_1] => 236, Maimbula
                        [shipping3_postcode] => 11880
                        [shipping3_city] => Nittambuwa
                        [shipping3_state] => 
                    )

            )

        [7] => Array
            (
                [shipping4] => Array
                    (
                        [shipping4_address_nickname] => PARENT 2
                        [shipping4_first_name] => Parent
                        [shipping4_last_name] => 2
                        [shipping4_company] => Parent - 2
                        [shipping4_country] => LK
                        [shipping4_address_1] => 236, Maimbula
                        [shipping4_postcode] => 11880
                        [shipping4_city] => Nittambuwa
                        [shipping4_state] => 
                    )

            )

    )

需要这样;

Array
(
    [shipping] => Array
        (
            [shipping_address_nickname] => HARSHANA
            [shipping_first_name] => Harshana
            [shipping_last_name] => Child Shipping
            [shipping_company] => Home
            [shipping_country] => LK
            [shipping_address_1] => 236, Maimbula
            [shipping_postcode] => 11880
            [shipping_city] => Nittambuwa
            [shipping_state] => 
        )

    [shipping2] => Array
        (
            [shipping2_address_nickname] => 
            [shipping2_first_name] => 
            [shipping2_last_name] => 
            [shipping2_company] => 
            [shipping2_country] => 
            [shipping2_address_1] => 
            [shipping2_postcode] => 
            [shipping2_city] => 
            [shipping2_state] => 
        )

    [shipping3] => Array
        (
            [shipping3_address_nickname] => PARENT 1
            [shipping3_first_name] => Parent
            [shipping3_last_name] => 1
            [shipping3_company] => Parent - 1
            [shipping3_country] => LK
            [shipping3_address_1] => 236, Maimbula
            [shipping3_postcode] => 11880
            [shipping3_city] => Nittambuwa
            [shipping3_state] => 
        )

    [shipping4] => Array
        (
            [shipping4_address_nickname] => PARENT 2
            [shipping4_first_name] => Parent
            [shipping4_last_name] => 2
            [shipping4_company] => Parent - 2
            [shipping4_country] => LK
            [shipping4_address_1] => 236, Maimbula
            [shipping4_postcode] => 11880
            [shipping4_city] => Nittambuwa
            [shipping4_state] => 
        )
)

我正在使用 php。

【问题讨论】:

  • 为什么每个数组都有不同的key?如果它们都相同,您可以使用array_column($array, 'shipping')
  • 是否保证每个嵌套数组中只有一个元素?
  • 是的,密钥是由另一个循环生成的 :(
  • 所以只需遍历数组,将每个子数组的第一个元素压入结果数组。
  • 您有多个具有相同键的元素。结果应该如何解决?

标签: php arrays multidimensional-array flatten


【解决方案1】:
$flattenedArray = [];

foreach ($mainArray as $subArray) {
    foreach ($subArray as $shippingKey => $subSubArray)
        $flattenedArray[$shippingKey] = $subSubArray;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 2012-08-27
    • 2018-02-28
    • 2018-03-31
    • 2011-09-05
    • 2010-11-22
    相关资源
    最近更新 更多