PHP比较了两个阵列,并具有三个结果集:匹配和不匹配的匹配



我有2个数组。一个是原始数据,另一个是新数据。在其中两个之间可能有匹配的值。我需要从新的入站阵列中弄清楚什么是新功能,什么是匹配和什么不是匹配。

最终目标是我需要这三个阵列,其中一个从原始条件中删除,其中一个是新条目,然后是与新条目中任何内容相匹配的原始条目。

我正在考虑以3个空白阵列开始填充原始或新循环时,并比较它们添加每种类型的旧类型的旧的,新的,删除的数组,以便我可以使用,以便我可以使用之后的结果。我可以在脑海中拼凑一个想法,该想法适用于2个阵列作为输出,但是我迷失了第三个。因此,我有点在这一点上被阻碍。寻找建议和或帮助创建循环或更好的东西,以产生我想要的3组结果。

来自数据库的原始数据数组:

Array(
      15,
      22,
      100,
      1500,
      2000,
      500,
      3000,
      1101
   )

入站新数据的数组

Array(
      100,
      800,
      920,
      1500,
      2000,
      1603,
      500,
      3000,
      1101
   )

原始和入口之间的预期匹配数量:

Array(
      100,
      1500,
      2000,
      500,
      3000,
      1101
   )

原始和新之间的预期"新"条目数量:

Array(
      100,
      800,
      920,
      1603
   )

来自原始和新的不匹配的旧的预期条目数量:

Array(
      15,
      22
   )

我显然只是手键入这些。

Barmar的评论正确,array_diffarray_intersect是您想要的。您的问题中有一个错别字," 100"出现在匹配和新值数组中。

<?php
$orig = array(15, 22, 100, 1500, 2000, 500, 3000, 1101);
$post = array(100, 800, 920, 1500, 2000, 1603, 500, 3000, 1101);
// Gets things in both arrays
$matches = array_intersect($orig, $post);
// Gets things in $post that aren't in $orig
$new     = array_diff($post, $orig);
// Gets things in $orig that aren't in $post
$removed = array_diff($orig, $post);
foreach (array($orig, $post, $matches, $new, $removed) as $array) {
    print_r($array);
}

我的猜测...您正在处理复选框或多选的复选框,以确定要保留的内容,添加的内容以及要删除的内容。

相关内容

最新更新