在PHP中减法两个数组怎么样
我有两个这样的数组在PHP中减法两个数组怎么样,php,arrays,data-structures,foreach,logic,Php,Arrays,Data Structures,Foreach,Logic,我有两个这样的数组 array1= [ { "SKPD_ID": "40606000", "SKPD_SUB1_ID": "40606000-000000760-000000" }, { "SKPD_ID": "40606000",
array1= [
{
"SKPD_ID": "40606000",
"SKPD_SUB1_ID": "40606000-000000760-000000"
},
{
"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"
}
]
$result=[
{
"SKPD_ID": "40606000",
"SKPD_SUB1_ID": "40606000-000000760-000000"
},
{
"SKPD_ID": "40606000",
"SKPD_SUB1_ID": "40606000-000000760-100000"
},
]
如果array2中有相同的值,我想删除array1中的值
所以我想要的最终结果是这样的
array1= [
{
"SKPD_ID": "40606000",
"SKPD_SUB1_ID": "40606000-000000760-000000"
},
{
"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"
}
]
$result=[
{
"SKPD_ID": "40606000",
"SKPD_SUB1_ID": "40606000-000000760-000000"
},
{
"SKPD_ID": "40606000",
"SKPD_SUB1_ID": "40606000-000000760-100000"
},
]
在原始系统中,阵列有多个数据双胞胎,我想要的是,如果有双胞胎,生成的阵列将只获取一个数据您似乎不想从阵列1中删除阵列2,但只想删除重复的数据 要从数组中删除重复项,请使用array\u unique() 这将准确地产生所需的输出
<?
$array1=
array(
0=>array(
"SKPD_ID"=> "40606000",
"SKPD_SUB1_ID"=> "40606000-000000760-000000"
),
1=> array(
"SKPD_ID"=> "40606000",
"SKPD_SUB1_ID"=> "40606000-000000760-000000"
),
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]=>Array([SKPD_ID]=>40606000)
[SKPD_SUB1_ID]=>40606000-000000 760-000000)
[1] =>阵列([SKPD\U ID]=>40606000[SKPD\U SUB1\U ID]=>
40606000-000000(760-000000)
[2] =>阵列([SKPD\U ID]=>40606000[SKPD\U SUB1\U ID]=>
40606000-000000760-100000)
############重复数据消除后的阵列:
数组([0]=>Array([SKPD_ID]=>40606000[SKPD_SUB1_ID]=>
40606000-000000(760-000000)
[2] =>阵列([SKPD\U ID]=>40606000[SKPD\U SUB1\U ID]=>
40606000-000000760-100000)
//正是您想要的结果:-)
为什么不删除数组1中值的两个副本?好的,你的方法是什么?@Nick,因为在原始数据中,我想基于array2而不是从中的twin数据删除它array1@nice_dev这里我的限制是,如果array1的数据与array2的数据相同,我想删除它,但我有困难,因为这两个数据没有可区分的索引them@Newbie123你的不是删除,而是过滤掉重复。实际上,我要做的是删除数组1中的数据,如果array2中有相同的数据,但问题是array1中有两个数据,如果有两个数据,那么您必须查看array2中有多少数据是两倍的。这太难了,因为没有索引来区分差异,但是谢谢你的参考,也许我可以再做一次实验,因为我误解了这个句子?“在原始系统中,阵列有多个数据孪生,我想要的是,如果有孪生,则生成的阵列将只获取一个数据”也许您可以解释该操作的用途。因为有多种方法可以获得想要的结果。我不理解您打算将删除阵列2的条目与重复数据消除相结合。