将两个数组合并为具有公共值的单个数组 [英] Combine two array in to single array with common value

查看:94
本文介绍了将两个数组合并为具有公共值的单个数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图用键值对两个数组进行Cobain运算很常见,但是我遇到一些逻辑问题:

I am trying to Cobain two array with value of key are common but I face some logical issue:

$array1 = array(
    array("id" => "1","name"=>"John"),
    array("id" => "2","name"=>"Peter"),
    array("id" => "3","name"=>"Tom"),
    array("id" => "12","name"=>"Astro")
);

$array2 = array(
    array("id" => "1","second_name"=>"Lim"),
    array("id" => "2","second_name"=>"Parker"),
    array("id" => "3","second_name"=>"PHP")
);

我的期望输出数组?

$result = array(
    array("id" => "1","name"=>"John","second_name"=>"Lim"),
    array("id" => "2","name"=>"Peter","second_name"=>"Parker"),
    array("id" => "3","name"=>"Tom","second_name"=>"PHP"),
    array("id" => "12","name"=>"Astro")
);

我尝试过

$arraycomb = array_unique(array_merge($array1,$array2), SORT_REGULAR);

我的输出是:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => John
        )

    [1] => Array
        (
            [id] => 2
            [name] => Peter
        )

    [2] => Array
        (
            [id] => 3
            [name] => Tom
        )

    [3] => Array
        (
            [id] => 12
            [name] => Astro
        )

    [4] => Array
        (
            [id] => 1
            [second_name] => Lim
        )

    [5] => Array
        (
            [id] => 2
            [second_name] => Parker
        )

    [6] => Array
        (
            [id] => 3
            [second_name] => PHP
        )

)

2。如何在同一数组中求取键值?或如何才能实现期望值?

2 . How Can I Cobain the key value inside same array? or How Can I bring the Expected out but?

注意:我正在尝试获取价值,而不是关键参考: PHP数组在同一键上合并两个数组

Note: I am trying for value instead of key ref:PHP Array Merge two Arrays on same key

推荐答案

您可以为此使用 array_map()。试试这个-

You can use array_map() for this. Try this -

function modifyArray($a, $b)
{
    if (!empty($a) && !empty($b)) {
        return array_merge($a, $b);
    } else if (!empty($a) && empty($b)) {
        return $a;
    }  else if (empty($a) && !empty($b)) {
        return $b;
    }
}

$new = array_map("modifyArray", $array1, $array2);
var_dump($new);

如果第一个数组的元素为空,它将生成新数组,两个数组中的所有值都将生成那么第二个数组将被合并,反之亦然。

It will generate the new array will all the values in both arrays.if the first array's element is empty then the second array will be merged and vice-versa.

这篇关于将两个数组合并为具有公共值的单个数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆