【问题标题】:merge array & rename key with php用php合并数组并重命名键
【发布时间】:2015-12-28 03:43:50
【问题描述】:

我有以下两个对象数组:
第一个数组: $array1

        Array
(
    [0] => Array
        (
            [match] => 1
            [when] => 2013-10-13 15:00:00
            [a] => AD
            [b] => NiP
            [winner] => c
            [closed] => 1
            [event] => Fragbite Masters
            [format] => 3
        )

    [1] => Array
        (
            [match] => 2
            [when] => 2013-10-13 15:00:00
            [a] => VG
            [b] => AD
            [winner] => a
            [closed] => 1
            [event] => Starseries
            [format] => 5
        )

    [2] => Array
        (
            [match] => 3
            [when] => 2013-10-13 21:15:00
            [a] => Serbia
            [b] => Portugal
            [winner] => a
            [closed] => 1
            [event] => ESEC
            [format] => 1
        )

)

第二个数组: $array2

    Array
(
    [0] => Array
        (
            [match] => 1
            [a] => 58
            [b] => 107
        )

    [1] => Array
        (
            [match] => 2
            [a] => 174
            [b] => 162
        )

    [2] => Array
        (
            [match] => 3
            [a] => 64
            [b] => 59
        )

)

我想要这样的东西:

    Array
(
    [0] => Array
        (
            [match] => 1
            [when] => 2013-10-13 15:00:00
            [a] => AD
            [b] => NiP
            [winner] => c
            [closed] => 1
            [event] => Fragbite Masters
            [format] => 3
            [per_a] => 58
            [per_b] => 107
        )

    [1] => Array
        (
            [match] => 2
            [when] => 2013-10-13 15:00:00
            [a] => VG
            [b] => AD
            [winner] => a
            [closed] => 1
            [event] => Starseries
            [format] => 5
            [per_a] => 174
            [per_b] => 162
        )

    [2] => Array
        (
            [match] => 3
            [when] => 2013-10-13 21:15:00
            [a] => Serbia
            [b] => Portugal
            [winner] => a
            [closed] => 1
            [event] => ESEC
            [format] => 1
            [per_a] => 64
            [per_b] => 59
        )

)

第二个数组中的键名[a] 和[b] 已修改为[per_a] 和[per_b]。

我尝试合并两个文件的事情:
array_merge 和 array_merge_recursive:两者都给我一个结果,其中 $array2 的合并值附加到末尾$array1.
array_combine:不起作用,因为 $array1 和 $array2 的元素数量不相等。

这只是每个文件的一部分,两者在元素方面并不相等。 如果您对我有答案,将不胜感激!提前谢谢!

【问题讨论】:

    标签: php arrays json merge


    【解决方案1】:

    试试这个你需要修改你的按键功能。见Demo

    $match :将检查两个数组中是否存在密钥。 $whereKey1
    $whereKey2 :从第二个数组中取出值并将其放入您的 $newkey1 和 $newkey2 的新密钥

    function key_compare_func($arr1, $arr2)
    {
        $newarray = array();
        $match = "match";
        $whereKey1 = "a";
        $whereKey2 = "b";
        $newKey1 = "per_a";
        $newKey2 = "per_b";
    
        if(is_array($arr1) && is_array($arr2)){
            if($arr1[$match] == $arr2[$match] ){
                $newarray = array_merge($arr1, array($newKey1 => $arr2[$whereKey1], $newKey2 => $arr2[$whereKey2]));
            }
        }
      return $newarray;
    }
    
    $modifiedArray = array_map("key_compare_func",$A1, $A2);
    echo '<pre>';print_r($modifiedArray);echo '</pre>';
    

    输出:

    [0] => Array
            (
                [match] => 1
                [when] => 2013-10-13 15:00:00
                [a] => AD
                [b] => NiP
                [winner] => c
                [closed] => 1
                [event] => Fragbite Masters
                [format] => 3
                [per_a] => 58
                [per_b] => 107
            )
    
        [1] => Array
            (
                [match] => 2
                [when] => 2013-10-13 15:00:00
                [a] => VG
                [b] => AD
                [winner] => a
                [closed] => 1
                [event] => Starseries
                [format] => 5
                [per_a] => 174
                [per_b] => 162
            )
    

    【讨论】:

    • 哇……干得好!你是男人,谢谢!整洁、清晰、快速!
    猜你喜欢
    • 2011-06-12
    • 2021-12-17
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    相关资源
    最近更新 更多