合并阵列&用php重命名密钥

时间:2015-09-30 11:15:27

标签: php arrays json merge

我有以下两个对象数组:
First Array: $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没有相同数量的元素,所以无法工作。

这只是每个文件的一部分,两者在元素方面都不相同。 如果你有一个答案,那将是一个折旧!提前thx!

1 个答案:

答案 0 :(得分:0)

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

  

// This is automatically called by loopback MyModel.setup = function() { // Super setup MyModel.base.setup.apply(this, arguments); // Your customization MyModel.remoteMethod(...); MyModel.disableRemoteMethod(...); }; :将检查两个数组中是否存在密钥。 $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>';