PHP中的两个数组相减如何

问题描述

我有 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
        )

)