【问题标题】:Compare and merge arrays in PHP在 PHP 中比较和合并数组
【发布时间】:2014-03-21 21:30:08
【问题描述】:

我有多个数组,想合并它们,但是,只有在巧合时才合并。假设如下示例:

[82] => Array(
            [0] => 72
            [1] => 85
            [2] => 86
            [3] => 104
            [4] => 218
            [5] => 219
        )

[85] => Array(
            [0] => 194
        )

[72] => Array(
            [0] => 98
            [1] => 99
            [2] => 195
        )

[104] => Array(
        [0] => 105
    )

我需要这个:

[82] => Array(

        [72] => Array(
                    [0] => 98
                    [1] => 99
                    [2] => 195
                )
        [85] => Array(
                    [0] => 194
                )
        [2] => 86
        [104] => Array(
                    [0] => 105
                )
        [4] => 218
        [5] => 219
)

我有 4 个一维数组,现在只有 1 个多维数组。

我该怎么做?

【问题讨论】:

标签: php arrays merge


【解决方案1】:

为您的需要编写了一个简单的函数。请注意函数和 foreach 循环中的参考,这在这里非常有用。这将以您想要的样式合并数组,但每次都会合并它(意味着 1 个数组可以转到多个数组)。如果要删除添加的数组,请查看帖子末尾。

function merge_myway($array, &$depth) {
    foreach($depth as $key => &$value)
    {
        if(is_array($value))
            merge_myway($array, $value);
        else
        {
            if(array_key_exists($value, $array))
            {
                $value = array($value => $array[$value]);
            }
        }
    }
}

$array = [
        82 => array(
            0 => 72,
            1 => 85,
            2 => 86,
            3 => 104,
            4 => 218,
            5 => 219,
        ), 
        85 => array(
            0 => 194,
        ), 
        72 => array(
            0 => 98,
            1 => 99,
            2 => 195,
        ), 
        104 => array(
            0 => 105,
        ),
];
echo "<pre>";
print_r($array);
merge_myway($array, $array);
print_r($array);
echo "</pre>";

合并后销毁数组的功能:

function merge_myway(&$array, &$depth) {
    foreach($depth as $key => &$value)
    {
        if(is_array($value))
            merge_myway($array, $value);
        else
        {
            if(array_key_exists($value, $array))
            {
                $temp = $array[$value];
                unset($array[$value]);
                $value = array($value => $temp);
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    相关资源
    最近更新 更多