【问题标题】:Merging multiple array in php在php中合并多个数组
【发布时间】:2016-04-11 05:03:58
【问题描述】:

我有两个数组..Array1 和 Array 2。 两个数组都包含 2 条记录。

现在我需要将两个数组合并到一个数组中..

在我的第二个数组中,我从 U_data 获得了两个字段以下。

[totalcharge] => 15
 [RoadTotal] => 15

现在我需要在第一个数组中合并这些字段..

请帮帮我,我需要合并多个数组。下面是问题:

我已经尝试过这样的事情......但我无法达到我的预期输出......

$abc = array_merge($content,$modecost);

**Array 1** 

Array
(
    [0] => Array
        (
            [u_data] => Array
                (
                    [Mode] => Rail
                    [TotalCost] => 150
                )

            [0] => Array
                (
                    [CostSavingRoutes] => 1
                    [RailCostSaving] => 150
                    [Costsavingshipments] => 2
                )

            [origin_city] => Array
                (
                    [origin_pcode] => 2046
                )

            [dest_city] => Array
                (
                    [dest_pcode] => 4361
                )

        )

    [1] => Array
        (
            [u_data] => Array
                (
                    [Mode] => Rail
                    [TotalCost] => 150
                )

            [0] => Array
                (
                    [CostSavingRoutes] => 1
                    [RailCostSaving] => 150
                    [Costsavingshipments] => 2
                )

            [origin_city] => Array
                (
                    [origin_pcode] => 3170
                )

            [dest_city] => Array
                (
                    [dest_pcode] => 4670
                )

        )

)


**Array 2** 

Array
(
    [0] => Array
        (
            [u_data] => Array
                (
                    [totalcharge] => 15
                    [RoadTotal] => 15
                )

        )

    [1] => Array
        (
            [u_data] => Array
                (
                    [totalcharge] => 15
                    [RoadTotal] => 15
                )

        )

)

最终我希望它看起来像这样

Array
(
    [0] => Array
        (
            [u_data] => Array
                (
                    [Mode] => Rail
                    [TotalCost] => 150
                    [totalcharge] => 15
                    [RoadTotal] => 15
                )

            [0] => Array
                (
                    [CostSavingRoutes] => 1
                    [RailCostSaving] => 150
                    [Costsavingshipments] => 2
                )

            [origin_city] => Array
                (
                    [origin_pcode] => 2046
                )

            [dest_city] => Array
                (
                    [dest_pcode] => 4361
                )

        )

    [1] => Array
        (
            [u_data] => Array
                (
                    [Mode] => Rail
                    [TotalCost] => 150
            [totalcharge] => 15
                    [RoadTotal] => 15
                )

            [0] => Array
                (
                    [CostSavingRoutes] => 1
                    [RailCostSaving] => 150
                    [Costsavingshipments] => 2
                )

            [origin_city] => Array
                (
                    [origin_pcode] => 3170
                )

            [dest_city] => Array
                (
                    [dest_pcode] => 4670
                )

        )

)

array_merge_recursive 的输出

我尝试下面的代码,但得到不同的结果...

   $array3   = array_merge_recursive($content, $modecost);         
             echo"<pre>"; print_r($array3);
             exit();

我希望一个数组中的所有 U_data 字段不在不同的数组中...

Array
(
    [0] => Array
        (
            [u_data] => Array
                (
                    [Mode] => Rail
                    [TotalCost] => 150
                )

            [0] => Array
                (
                    [CostSavingRoutes] => 1
                    [RailCostSaving] => 150
                    [Costsavingshipments] => 2
                )

            [origin_city] => Array
                (
                    [origin_pcode] => 2046
                )

            [dest_city] => Array
                (
                    [dest_pcode] => 4361
                )

        )

    [1] => Array
        (
            [u_data] => Array
                (
                    [Mode] => Rail
                    [TotalCost] => 150
                )

            [0] => Array
                (
                    [CostSavingRoutes] => 1
                    [RailCostSaving] => 150
                    [Costsavingshipments] => 2
                )

            [origin_city] => Array
                (
                    [origin_pcode] => 3170
                )

            [dest_city] => Array
                (
                    [dest_pcode] => 4670
                )

        )

    [2] => Array
        (
            [u_data] => Array
                (
                    [totalcharge] => 15
                    [RoadTotal] => 15
                )

        )

    [3] => Array
        (
            [u_data] => Array
                (
                    [totalcharge] => 15
                    [RoadTotal] => 15
                )

        )

)

【问题讨论】:

  • 试试array_merge_recursive
  • 嗨先生,我在我的问题中添加了 array_merge_recursive 的输出......但没有得到我想要的结果..请帮助..
  • @testdesk 检查我的答案。
  • @testdesk 请检查我的回答。种类

标签: php arrays merge


【解决方案1】:

试试这个

$res = Hash::merge($arr1, $arr2);

【讨论】:

  • 应该真正使用Hash::merge() 而不是Set::merge()
  • Set 自 CakePHP 2.2 以来一直是 deprecated,因此除非使用旧版本的 Cake,否则不应使用。
【解决方案2】:

正确使用array_merge_recursive。

$arr1 = array(
            '0' => array(
                'u_data' => array(
                    'Mode' => 'Rail',
                    'TotalCost' => 150,),
                '0' => array(
                    'CostSavingRoutes' => 1,
                    'RailCostSaving' => 150,
                    'Costsavingshipments' => 2,),
                'origin_city' => array(
                    'origin_pcode' => 2046,),
                'dest_city' => array(
                    'dest_pcode' => 4361,),
            ),
            '1' => array(
                'u_data' => array(
                    'Mode' => 'Rail',
                    'TotalCost' => 150,),
                '0' => array(
                    'CostSavingRoutes' => 1,
                    'RailCostSaving' => 150,
                    'Costsavingshipments' => 2,),
                'origin_city' => array(
                    'origin_pcode' => 3170,),
                'dest_city' => array(
                    'dest_pcode' => 4670,),
            ),
);
$arr2 =array(
        '0' => array(
            'u_data' => array(
                'totalcharge' => 15,
                'RoadTotal' => 15,)
        ),
        '1' => array(
            'u_data' => array(
                'totalcharge' => 15,
                'RoadTotal' => 15,),
        )
);

for ($i=0; $i < count($arr1); $i++) { 
    $final[] = array_merge_recursive($arr1[$i], $arr2[$i]);    
}


echo "<pre>".print_r($arr1,1)."</pre>";
echo "<pre>".print_r($arr2,1)."</pre>";
echo "<pre> Final  ---> ".print_r($final,1)."</pre>";

【讨论】:

    【解决方案3】:

    我认为 array_merge_recursive 会起作用,但它似乎不像那样起作用。

    <?php
        $array1Entry1 = array(
            'u_data' => array(
                'Mode' => 'Rail',
                'TotalCost' => 150
            )
        );
        $array1Entry2 = array(
            'u_data' => array(
                'Mode' => 'Rail',
                'TotalCost' => 150
            )
        );
        $array2Entry1 = array(
            'u_data' => array(
                'totalcharge' => 15,
                'RoadTotal' => 15
            )
        );
        $array2Entry2 = array(
            'u_data' => array(
                'totalcharge' => 15,
                'RoadTotal' => 15
            )
        );
    
    $array1 = array($array1Entry1, $array1Entry2);
    $array2 = array($array2Entry1, $array2Entry2);
    
    $mergedArray = array();
    
    foreach ($array1 as $key => $values) {
        $mergedArray[$key] = array_merge_recursive($array1[$key], $array2[$key]);
    }
    

    这段代码给出了这个输出。

    Array
    (
        [0] => Array
            (
                [u_data] => Array
                    (
                        [Mode] => Rail
                        [TotalCost] => 150
                        [totalcharge] => 15
                        [RoadTotal] => 15
                    )
    
            )
    
        [1] => Array
            (
                [u_data] => Array
                    (
                        [Mode] => Rail
                        [TotalCost] => 150
                        [totalcharge] => 15
                        [RoadTotal] => 15
                    )
    
            )
    
    )
    

    【讨论】:

    • 嗨先生,我在我的问题中添加了 array_merge_recursive 的输出......但没有得到我想要的结果..请帮助..
    【解决方案4】:

    试试这个代码,找到解决方案花了很多时间,但我做到了......

    <?php 
    $arr1 = array(
                '0' => array('u_data' => array('Mode' => 'Rail','TotalCost' => 150),
                              '0' => array( 'CostSavingRoutes' => 1,'RailCostSaving' => 150,'Costsavingshipments' => 2),
                              'origin_city' => array('origin_pcode' => 2046),
                              'dest_city' => array('dest_pcode' => 4361),
                ),
                '1' => array('u_data' => array('Mode' => 'Rail','TotalCost' => 150),
                             '0' => array( 'CostSavingRoutes' => 1,'RailCostSaving' => 150,'Costsavingshipments' => 2),
                             'origin_city' => array('origin_pcode' => 3170),
                             'dest_city' => array('dest_pcode' => 4670),
                ),
    );
    $arr2 =array(
            '0' => array('u_data' => array('totalcharge' => 15,'RoadTotal' => 15)),
            '1' => array('u_data' => array('totalcharge' => 15,'RoadTotal' => 15))
        );
    $newArray =array();     
    foreach($arr1 as $key => $val)
    {
        $newArray[] = array_merge_recursive($val,$arr2[$key]);
    }
    echo "<pre>"; print_r($newArray);
    ?>
    

    这将输出:

    Array
    (
        [0] => Array
            (
                [u_data] => Array
                    (
                        [Mode] => Rail
                        [TotalCost] => 150
                        [totalcharge] => 15
                        [RoadTotal] => 15
                    )
    
                [0] => Array
                    (
                        [CostSavingRoutes] => 1
                        [RailCostSaving] => 150
                        [Costsavingshipments] => 2
                    )
    
                [origin_city] => Array
                    (
                        [origin_pcode] => 2046
                    )
    
                [dest_city] => Array
                    (
                        [dest_pcode] => 4361
                    )
    
            )
    
        [1] => Array
            (
                [u_data] => Array
                    (
                        [Mode] => Rail
                        [TotalCost] => 150
                        [totalcharge] => 15
                        [RoadTotal] => 15
                    )
    
                [0] => Array
                    (
                        [CostSavingRoutes] => 1
                        [RailCostSaving] => 150
                        [Costsavingshipments] => 2
                    )
    
                [origin_city] => Array
                    (
                        [origin_pcode] => 3170
                    )
    
                [dest_city] => Array
                    (
                        [dest_pcode] => 4670
                    )
    
            )
    
    )
    

    【讨论】:

      猜你喜欢
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多