Php 交叉比较两个数组元素

Php 交叉比较两个数组元素,php,arrays,Php,Arrays,在大量API调用和循环之后,我创建了一个数组。此数组采用以下形式 2 => array:3 [▼ "someInfo" => array:1 [▶] "existingIDs" => array:1 [▼ 0 => array:1 [▼ "id" => "123456" ] ] "idList" => array:2 [▼ 0 => array:1 [▼

在大量API调用和循环之后,我创建了一个数组。此数组采用以下形式

2 => array:3 [▼
    "someInfo" => array:1 [▶]
    "existingIDs" => array:1 [▼
      0 => array:1 [▼
        "id" => "123456"
      ]
    ]
    "idList" => array:2 [▼
      0 => array:1 [▼
        "id" => "123456"
      ]
      1 => array:1 [▼
        "id" => "777564"
      ]
    ]
]
我感兴趣的部分是existingid和idList。问题是两个数组元素中都出现了一些id,因此在上面的示例中,ID123456同时出现在两个数组元素中。 我需要做的是交叉比较这两个元素,也许创建一个具有唯一ID的新元素。所以上面的例子可能会变成这样

2 => array:3 [▼
    "someInfo" => array:1 [▶]
    "existingIDs" => array:1 [▼
      0 => array:1 [▼
        "id" => "123456"
      ]
    ]
    "idList" => array:2 [▼
      0 => array:1 [▼
        "id" => "123456"
      ]
      1 => array:1 [▼
        "id" => "777564"
      ]
    ]
    "uniqueList" => array:2 [
      0 => array:1 [
        "id" => "123456"
      ]
      1 => array:1 [
        "id" => "777564"
      ]
    ]
]
这样的事情怎么可能实现呢


感谢对
array\u column
(从PHP 5.5开始提供)、
array\u merge
array\u unique
函数使用以下方法:

$arr =  [
    "someInfo" => [],
    "existingIDs" => [
        ["id" => "123456"]
    ],
    "idList" => [
      ["id" => "123456"],
      ["id" => "777564"],
      ["id" => "777564"]
    ]
];

$all_ids = array_merge(array_column($arr['existingIDs'], 'id'), array_column($arr['idList'], 'id'));
$arr['uniqueList'] = array_unique($all_ids);

print_r($arr);
输出:

Array
(
    [someInfo] => Array
        (
        )

    [existingIDs] => Array
        (
            [0] => Array
                (
                    [id] => 123456
                )
        )

    [idList] => Array
        (
            [0] => Array
                (
                    [id] => 123456
                )

            [1] => Array
                (
                    [id] => 777564
                )

            [2] => Array
                (
                    [id] => 777564
                )
        )

    [uniqueList] => Array
        (
            [0] => 123456
            [2] => 777564
        )
)

array\u column
(从PHP 5.5开始提供)、
array\u merge
array\u unique
函数使用以下方法:

$arr =  [
    "someInfo" => [],
    "existingIDs" => [
        ["id" => "123456"]
    ],
    "idList" => [
      ["id" => "123456"],
      ["id" => "777564"],
      ["id" => "777564"]
    ]
];

$all_ids = array_merge(array_column($arr['existingIDs'], 'id'), array_column($arr['idList'], 'id'));
$arr['uniqueList'] = array_unique($all_ids);

print_r($arr);
输出:

Array
(
    [someInfo] => Array
        (
        )

    [existingIDs] => Array
        (
            [0] => Array
                (
                    [id] => 123456
                )
        )

    [idList] => Array
        (
            [0] => Array
                (
                    [id] => 123456
                )

            [1] => Array
                (
                    [id] => 777564
                )

            [2] => Array
                (
                    [id] => 777564
                )
        )

    [uniqueList] => Array
        (
            [0] => 123456
            [2] => 777564
        )
)

在您的示例中,我假设123456不应该是新元素的一部分?只是确定一下。您必须在idList中进行迭代,同时保留一个正在运行的id列表。在您第一次遇到ID时以及以后遇到ID时,将其添加到此列表中,如果它是跟踪列表的一部分,则跳过它。在您的示例中,我假设123456不应该是新元素的一部分?只是确定一下。您必须在idList中进行迭代,同时保留一个正在运行的id列表。在您第一次遇到ID时以及以后的时间将其添加到此列表中,如果它是跟踪列表的一部分,请跳过它。