合并数组元素基于同一键



我正在寻找基于2个带有通用键的元素之间的密钥值进行"合并"的最佳解决方案。

输入:

Array1 => [{"id" : "1", "LastName":"Jackson"}, {"id" : "2", "LastName":"Bross"} ]
Array2 =>[{"id" : "1", "FirstName":"Mickael"},{"id" : "2", "FirstName":"Mario"} ]

ouput:

[{"id" : "1", "FirstName":"Mickael", "LastName":"Jackson"},
{"id" : "2", "FirstName":"Mario", "LastName":"Bross"} ]

感谢您的帮助。

我认为内部数据是对象,因此我们可以使用foreach,如果ID是匹配的,则可以通过object->key = value格式

进行分配对象数据
foreach ($array1 as $key => $value) {
    foreach ($array2 as $k => $v) {
        if($value->id == $v->id){
            $array1[$key]->FirstName = $v->FirstName;
        }
    }
}
var_dump($array1);

//输出

array (size=2)
  0 => 
    object(stdClass)[1]
      public 'id' => string '1' (length=1)
      public 'LastName' => string 'Jackson' (length=7)
      public 'FirstName' => string 'Mickael' (length=7)
  1 => 
    object(stdClass)[2]
      public 'id' => string '2' (length=1)
      public 'LastName' => string 'Bross' (length=5)
      public 'FirstName' => string 'Mario' (length=5)

请注意,要做的是,您必须在最后一个名字和名字数组上具有相同数量的元素:

$lastNames = array(
    array(
        'id' => 1,
        'lastName' => 'Kent'
    ),
    array(
        'id' => 2,
        'lastName' => 'Snow'
    ),
    array(
        'id' => 3,
        'lastName' => 'Parker'
    ),
);
$firstNames = array(
    array(
        'id' => 1,
        'firstName' => 'Clark'
    ),
    array(
        'id' => 2,
        'firstName' => 'John'
    ),
    array(
        'id' => 3,
        'firstName' => 'Peter'
    ),
);
$people = array();
foreach($firstNames as $key => $data) {
    $people[] = array(
        'id' => $data['id'],
        'FirstName' => $data['firstName'],
        'LastName' => $lastNames[$key]['lastName']
    );
}
print_r($people);

输出:

Array
(
    [0] => Array
        (
            [id] => 1
            [FirstName] => Clark
            [LastName] => Kent
        )
    [1] => Array
        (
            [id] => 2
            [FirstName] => John
            [LastName] => Snow
        )
    [2] => Array
        (
            [id] => 3
            [FirstName] => Peter
            [LastName] => Parker
        )
)

最新更新