Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中减法两个数组怎么样_Php_Arrays_Data Structures_Foreach_Logic - Fatal编程技术网

在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的条目与重复数据消除相结合。