Php 交叉比较两个数组元素
在大量API调用和循环之后,我创建了一个数组。此数组采用以下形式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 [▼
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时以及以后的时间将其添加到此列表中,如果它是跟踪列表的一部分,请跳过它。