问题描述
我有 2 个这样的数组
array1= [
{
"SKPD_ID": "40606000","SKPD_SUB1_ID": "40606000-000000760-000000"
},{
"SKPD_ID": "40606000","SKPD_SUB1_ID": "40606000-000000760-100000"
}
]
$array2 = [
{
"SKPD_ID": "40606000","SKPD_SUB1_ID": "40606000-000000760-000000"
}
]
如果array2中有相同的值,我想删除array1中的值 所以我想要的最终结果是这样的
$result=[
{
"SKPD_ID": "40606000","SKPD_SUB1_ID": "40606000-000000760-000000"
},{
"SKPD_ID": "40606000","SKPD_SUB1_ID": "40606000-000000760-100000"
},]
原系统数组有多个数据孪生,我想要的是如果有孪生,结果数组只取一个数据
解决方法
您似乎不想从数组 1 中删除数组 2,而只想删除重复项?
要从数组中删除重复项,请使用 array_unique() https://www.php.net/manual/de/function.array-unique.php
这将准确地产生所需的输出
<?
$array1=
array(
0=>array(
"SKPD_ID"=> "40606000","SKPD_SUB1_ID"=> "40606000-000000760-000000"
),1=> array(
"SKPD_ID"=> "40606000",2=> array(
"SKPD_ID"=> "40606000","SKPD_SUB1_ID"=> "40606000-000000760-100000"
)
);
echo"Original array:<br>";
print_r($array1);
$array2= array_unique ($array1,SORT_REGULAR);
echo"<br>Array after deduplication:<br>";
print_r($array2);
?>
输出:
原始数组:数组([0] => 数组([SKPD_ID] => 40606000 [SKPD_SUB1_ID] => 40606000-000000760-000000)
[1] => 数组 ( [SKPD_ID] => 40606000 [SKPD_SUB1_ID] => 40606000-000000760-000000)
[2] => 数组 ( [SKPD_ID] => 40606000 [SKPD_SUB1_ID] => 40606000-000000760-100000 ) )
############ 重复数据删除后的数组:
数组 ( [0] => 数组 ( [SKPD_ID] => 40606000 [SKPD_SUB1_ID] => 40606000-000000760-000000)
[2] => 数组 ( [SKPD_ID] => 40606000 [SKPD_SUB1_ID] => 40606000-000000760-100000 ) )
//正是你想要的结果:-)
,<?php
$array1= [
[
"SKPD_ID" => "40606000","SKPD_SUB1_ID"=> "40606000-000000760-000000"
],[
"SKPD_ID"=> "40606000","SKPD_SUB1_ID"=> "40606000-000000760-100000"
]
];
$array2 = [
[
"SKPD_ID"=> "40606000","SKPD_SUB1_ID"=> "40606000-000000760-000000"
]
];
$found = [];
$result = [];
foreach ($array1 as $el) {
if (in_array($el,$array2)) {
$json = json_encode($el);
if (!in_array($json,$found)) {
$found[] = $json;
$result[] = $el;
}
}
else {
$result[] = $el;
}
}
你可以看到这个脚本here的结果,它会
Array
(
[0] => Array
(
[SKPD_ID] => 40606000
[SKPD_SUB1_ID] => 40606000-000000760-000000
)
[1] => Array
(
[SKPD_ID] => 40606000
[SKPD_SUB1_ID] => 40606000-000000760-100000
)
)