通过共享 id 列值合并两个二维对象数组中的对象[重复]

问题描述 投票:0回答:4

我想将两个具有相同值的数组 ->

user_id
合并为一个数组。 您可以看到我有两个具有不同对象的数组。我想通过
user_id
将它们合并到包含所有对象的一个数组中。 例如:

$array1 = [
    $array[0]->leads = 5643;
    $array[0]->user_id= 15;  
    $array[0]->sales = 1433;

    $array[1]->leads = 3264;
    $array[1]->user_id= 9;  
    $array[1]->sales = 1254;        
];

$array2 = [
    $array[0]->user_id= 15;
    $array[0]->processing = 2300;
    $array[0]->deleted = 203;

    $array[1]->user_id= 9;
    $array[1]->processing = 103;
    $array[1]->deleted = 80;
];

以下数组是目标。

$result = [
    $array[0]->user_id= 15;
    $array[0]->processing = 2300;
    $array[0]->leads = 5643;
    $array[0]->deleted = 203;
    $array[0]->sales = 1433;

    $array[1]->user_id= 9;
    $array[1]->processing = 103;
    $array[1]->leads = 3264;
    $array[1]->deleted = 80;
    $array[1]->sales = 1254;
];
php arrays object merge mapping
4个回答
0
投票

迭代数组并使用

user_id
作为键构建对象的组合数组。

foreach ($array as $entry) {

    // if an entry for this user id hasn't been created in the result, add this object
    if (!isset($result[$entry->user_id])) {
        $result[$entry->user_id] = $entry;

    // otherwise, iterate this object and add the values of its keys to the existing entry
    } else {
        foreach ($entry as $key => $value) {
            $result[$entry->user_id]->$key = $value;
        }
    }
}

鉴于您刚刚提供的附加信息(两个单独的数组),解决方案基本相同,只需首先将两个数组合并在一起即可。

foreach (array_merge($array1, $array2) as $entry) { ...

(工作示例位于 https://3v4l.org/ccdQc


-1
投票

怎么样

array_merge
,

<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>

array_merge_recursive
,

<?php
$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
?>

示例

$array = [
    1 => [
        'cost' => '25'
    ],

    2 => [
        'blah' => 'test'
    ]
];

$new_array = array_merge_recursive($array[1], $array[2]);

var_dump($new_array);

输出

array(2) {
  ["cost"]=>
  string(2) "25"
  ["blah"]=>
  string(4) "test"
}

实例

重复


-1
投票
<?php
    $array1= array("leads"=> 5643,"user_id"=>15,"sales" =>1433);
    $array2= array("user_id"=> 15,"processing" => 2300,"deleted" => 203);
        $array= (array_merge($array1,$array2));
        print_r($array);
    ?>

-1
投票

这对我有用。

array_unique(array_merge(array1, array2));
© www.soinside.com 2019 - 2024. All rights reserved.