我有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_diff
和array_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);
}
我的猜测...您正在处理复选框或多选的复选框,以确定要保留的内容,添加的内容以及要删除的内容。