PHP的 - 如何合并有元素的不同没有为每个阵列二维数组 [英] php - how to merge 2d array that have different no of element for each array

查看:83
本文介绍了PHP的 - 如何合并有元素的不同没有为每个阵列二维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有2套二维数组的,我想合并成1二维数组。但元素的每个阵列的不一样,并为第2单元的数量是一样的,我不想重复它。
这里是它的

首款2D数组:

 阵列(
       [0] =>排列
           (
              [0] => 25/2/2013
              [1] => 8.45 A.M
              [2] => 9.98
           )       [1] =>排列
           (
              [0] => 25/2/2013
              [1] => 8.46 A.M
              [2] => 9.02
           )
     )

第二二维数组:

 阵列(
        [0] =>排列
            (
                [0] => 25/2/2013
                [1] => 8.45 A.M
                [2] => 1.23
                [3] => 6.1
            )        [1] =>排列
            (
                [0] => 25/2/2013
                [1] => 8.46 A.M
                [2] => 1.75
                [3] => 1.75
            )
      )

我该如何导致就象这样:

 阵列(
        [0] =>排列
            (
                [0] => 25/2/2013
                [1] => 8.45 A.M
                [2] => 9.98
                [3] => 1.23
                [4] => 6.1
            )        [1] =>排列
            (
                [0] => 25/2/2013
                [1] => 8.46 A.M
                [2] => 9.02
                [3] => 1.75
                [4] => 1.75
            )
     )

这里是第一个数组VAR出口:

 (0 =>数组(0 =>2013年5月2日,1 =>上午9时31分00秒,2 =>'0.395 ',3 =>'0.395',4 = GT;'302.855',5 = GT;'0.563',),1 =>阵列(0 =>'2013年5月2日',1 => 上午09时33分○○秒',2 =>'0.383',3 =>'0.383',4 = GT;'303.431',5 = GT;'0.563',)

和第二个数组:

 (0 =>数组(0 =>2013年5月2日,1 =>上午9时31分00秒,2 =>' - 1.000,3 =>'-1.000',4 = GT;'-1.000',5 = GT;'-1.670',6 = GT;'-1.000',7 = GT;'-11.000',), 1 =>阵列(0 =>'2013年5月2日',1 =>'上午9时33分零零秒',2 =>'-1.000',3 =>'-1.000',4 =>'-1.000',5 = GT;'-1.670',6 = GT;'-1.000',7 = GT;'-11.000',)


解决方案

如果两个数组都是以相同的顺序中,code是pretty简单:

  $ a =阵列(
    阵列(2013年5月2日','上午9点31分00秒,0.395,0.395,302.855,0.563),
    阵列(2013年5月2日','上午九点33分00秒,0.383,0.383,303.431,0.563),
);$ B =阵列(
    阵列(2013年5月2日','上午9点31分00秒,-1.000,-1.000,-1.000,-1.670,-1.000,-11.000),
    阵列(2013年5月2日','上午九点33分00秒,-1.000,-1.000,-1.000,-1.670,-1.000,-11.000),
);
$ I =新MultipleIterator(MultipleIterator :: MIT_NEED_ALL | MultipleIterator :: MIT_KEYS_ASSOC);
$ I-GT&; attachIterator(新ArrayIterator($ A),'A');
$异> attachIterator(新ArrayIterator($ b)中,B);$结果= [];
的foreach($ I为V $){
    $结果[] = array_merge($ V ['一'],array_slice($ V ['B'],2));
}
的print_r($结果);

您基本上同时遍历两个阵列上,并为每个元件通过合并所述第一与第二(跳过的公共部分)构成最终的阵列

结果:

 阵列

    [0] =>排列
        (
            [0] => 2013年5月2日
            [1] =>上午九时31分00秒
            [2] => 0.395
            [3] => 0.395
            [4] => 302.855
            [5] => 0.563
            [6] => -1.000
            [7] => -1.000
            [8] => -1.000
            [9] => -1.670
            [10] => -1.000
            [11] => -11.000
        )    [1] =>排列
        (
            [0] => 2013年5月2日
            [1] =>上午09时33分00秒
            [2] => 0.383
            [3] => 0.383
            [4] => 303.431
            [5] => 0.563
            [6] => -1.000
            [7] => -1.000
            [8] => -1.000
            [9] => -1.670
            [10] => -1.000
            [11] => -11.000
        )

I have 2 set of 2d array and i want merge into 1 2d array. but the number of element in each array its not same and for the first 2 element is same and i don't want to duplicate it. here its is.

First 2d array:

Array(   
       [0] => Array
           (
              [0] => 25/2/2013
              [1] => 8.45 a.m
              [2] => 9.98
           )

       [1] => Array
           (
              [0] => 25/2/2013
              [1] => 8.46 a.m
              [2] => 9.02
           )
     )

second 2d array:

 Array(   
        [0] => Array
            (
                [0] => 25/2/2013
                [1] => 8.45 a.m
                [2] => 1.23
                [3] => 6.1
            )

        [1] => Array
            (
                [0] => 25/2/2013
                [1] => 8.46 a.m
                [2] => 1.75
                [3] => 1.75
            )
      )

How do i get result as this:

Array(   
        [0] => Array
            (
                [0] => 25/2/2013
                [1] => 8.45 a.m
                [2] => 9.98
                [3] => 1.23
                [4] => 6.1
            )

        [1] => Array
            (
                [0] => 25/2/2013
                [1] => 8.46 a.m
                [2] => 9.02
                [3] => 1.75
                [4] => 1.75
            )
     )

here is var export for first array:

( 0 => array ( 0 => '5/2/2013', 1 => '9:31:00 AM', 2 => '0.395', 3 => '0.395', 4 => '302.855', 5 => '0.563', ), 1 => array ( 0 => '5/2/2013', 1 => '9:33:00 AM', 2 => '0.383', 3 => '0.383', 4 => '303.431', 5 => '0.563', )

and for second array:

( 0 => array ( 0 => '5/2/2013', 1 => '9:31:00 AM', 2 => '-1.000', 3 => '-1.000', 4 => '-1.000', 5 => '-1.670', 6 => '-1.000', 7 => '-11.000', ), 1 => array ( 0 => '5/2/2013', 1 => '9:33:00 AM', 2 => '-1.000', 3 => '-1.000', 4 => '-1.000', 5 => '-1.670', 6 => '-1.000', 7 => '-11.000', )

解决方案

If both arrays are in the same order, the code is pretty straightforward:

$a = array(
    array('5/2/2013', '9:31:00 AM', '0.395', '0.395', '302.855', '0.563'),
    array('5/2/2013', '9:33:00 AM', '0.383', '0.383', '303.431', '0.563'),
);

$b = array(
    array('5/2/2013', '9:31:00 AM', '-1.000', '-1.000', '-1.000', '-1.670', '-1.000', '-11.000'),
    array('5/2/2013', '9:33:00 AM', '-1.000', '-1.000', '-1.000', '-1.670', '-1.000', '-11.000'),
);


$i = new MultipleIterator(MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_ASSOC);
$i->attachIterator(new ArrayIterator($a), 'a');
$i->attachIterator(new ArrayIterator($b), 'b');

$result = [];
foreach ($i as $v) {
    $result[] = array_merge($v['a'], array_slice($v['b'], 2));
}
print_r($result);

You basically iterate over both arrays at the same time and for each element construct the final array by merging the first with the second (skipping the common part).

Result:

Array
(
    [0] => Array
        (
            [0] => 5/2/2013
            [1] => 9:31:00 AM
            [2] => 0.395
            [3] => 0.395
            [4] => 302.855
            [5] => 0.563
            [6] => -1.000
            [7] => -1.000
            [8] => -1.000
            [9] => -1.670
            [10] => -1.000
            [11] => -11.000
        )

    [1] => Array
        (
            [0] => 5/2/2013
            [1] => 9:33:00 AM
            [2] => 0.383
            [3] => 0.383
            [4] => 303.431
            [5] => 0.563
            [6] => -1.000
            [7] => -1.000
            [8] => -1.000
            [9] => -1.670
            [10] => -1.000
            [11] => -11.000
        )
)

这篇关于PHP的 - 如何合并有元素的不同没有为每个阵列二维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆