如何连接在PHP两个或更多阵列没有松动的值,如果它是同一个键和值不同 [英] How to concatenate two or more arrays in PHP without loosing values if it is same key and different values

查看:99
本文介绍了如何连接在PHP两个或更多阵列没有松动的值,如果它是同一个键和值不同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个多维数组。我需要将两者连接起来而不会丢失它具有相同的密钥和不同的价值观的任何值。下面是这种情况:

 数组1

    [0] => 11
    [2] => 12
    [3] => 13
    [4] => (
                [0] => 100
                [1] => 200
            )
    [5] => 2
    [6] => 3
)ARRAY2

    [0] => 11
    [2] => 12
    [3] => 13
    [4] => (
                [0] => 400
                [1] => 500
            )
    [5] => 2
    [6] => 3

结果应该是

 结果

    [0] => 11
    [2] => 12
    [3] => 13
    [4] => (
                [0] => (
                            [0] => 100
                            [1] => 400
                        )
                [1] => (
                            [0] => 200
                            [1] => 500
                        )
            )
    [5] => 2
    [6] => 3


解决方案

下面是一个解决办法:

 < PHP
$ arrayA =阵列(0 => 11 2 => 12,3 => 13,4 =>阵列(0 =→100,1 =>阵列(0 => 222),), 5 =大于2,6 =→3);
$ arrayB =阵列(
    0 => 11,
    2 => 12,
    3 => 13,
    4 =>阵列(
        0 => 100,
        1 =>阵列(0 =>阵列(0 =>'TEST1',1 =>'TEST2'),1 =>阵列(0 =>'TEST1',1 =>'TEST2'),),
    )
    5 => 2,
    6 => 3
);
/ **
 * @参数$一个
 * @参数$ B
 * @返回数组
 * /
功能array_merge_graceful($ A,$ B)
{
    $ C = [];
    如果(is_array($ A)及和放大器; is_array($ B)){
        的foreach(array_merge(array_keys($ A),array_keys($ b)项)$ I){
            如果(!array_key_exists($ I $ A)){
                $ C [$ i] = $ B [$ i];
            } ELSEIF(!array_key_exists($ I,$ B)){
                $ C [$ i] = $ A [$ i];
            }其他{
                $ C [$ i] = array_merge_graceful($ A [$ i],$ B [$ i]);
            }
        }
    }其他{
        如果($ A<> $ B){
            $ C = $ A,$ B]。
        }其他{
            $ C = $ A;
        }
    }
    返回$ C;
}后续代码var_dump(array_merge_graceful($ arrayA,$ arrayB));?>

I have two multi-dimensional arrays. I need to concatenate the two without loosing any values which have the same key and different values. Here is the scenario:

Array1
(
    [0] => 11
    [2] => 12
    [3] => 13
    [4] => (
                [0] =>  100
                [1] =>  200
            )
    [5] => 2
    [6] => 3
)

Array2
(
    [0] => 11
    [2] => 12
    [3] => 13
    [4] => (
                [0] =>  400
                [1] =>  500
            )
    [5] => 2
    [6] => 3
)

The result should be

Result
(
    [0] => 11
    [2] => 12
    [3] => 13
    [4] => (
                [0] =>  (
                            [0] => 100
                            [1] => 400
                        )
                [1] =>  (
                            [0] => 200
                            [1] => 500
                        )
            )
    [5] => 2
    [6] => 3
)

解决方案

Here is one solution:

<?php
$arrayA = array(0 => 11, 2 => 12, 3 => 13, 4 => array(0 => 100, 1 => array(0 => 222),), 5 => 2, 6 => 3);
$arrayB = array(
    0 => 11,
    2 => 12,
    3 => 13,
    4 => array(
        0 => 100,
        1 => array(0 => array(0 => 'test1', 1 => 'test2'), 1 => array(0 => 'test1', 1 => 'test2'),),
    ),
    5 => 2,
    6 => 3
);


/**
 * @param $a
 * @param $b
 * @return array
 */
function array_merge_graceful($a, $b)
{
    $c = [];
    if (is_array($a) && is_array($b)) {
        foreach (array_merge(array_keys($a),array_keys($b)) as $i) {
            if (!array_key_exists($i, $a)) {
                $c[$i] = $b[$i];
            } elseif (!array_key_exists($i, $b)) {
                $c[$i] = $a[$i];
            } else {
                $c[$i] = array_merge_graceful($a[$i], $b[$i]);
            }
        }
    } else {
        if ($a <> $b) {
            $c = [$a, $b];
        } else {
            $c = $a;
        }
    }
    return $c;
}

var_dump(array_merge_graceful($arrayA, $arrayB));

?>

这篇关于如何连接在PHP两个或更多阵列没有松动的值,如果它是同一个键和值不同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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