如何在 PHP 中减去两个数组
How about subtraction two arrays in PHP
我有 2 个这样的数组
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"
}
]
如果 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",
"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);
?>
Output:
original Array: 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 ) )
############ Array after deduplication:
Array ( [0] => Array ( [SKPD_ID] => 40606000 [SKPD_SUB1_ID] =>
40606000-000000760-000000 )
[2] => Array ( [SKPD_ID] => 40606000 [SKPD_SUB1_ID] =>
40606000-000000760-100000 ) )
//exactly the result you desired :-)
<?php
$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"
]
];
$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
)
)
我有 2 个这样的数组
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"
}
]
如果 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",
"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);
?>
Output:
original Array: 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 ) )
############ Array after deduplication:
Array ( [0] => Array ( [SKPD_ID] => 40606000 [SKPD_SUB1_ID] => 40606000-000000760-000000 )
[2] => Array ( [SKPD_ID] => 40606000 [SKPD_SUB1_ID] => 40606000-000000760-100000 ) )
//exactly the result you desired :-)
<?php
$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"
]
];
$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
)
)