【问题标题】:filter away duplicates in two lists not containing a dot php过滤掉两个不包含点的列表中的重复项 php
【发布时间】:2015-08-25 22:29:50
【问题描述】:

假设我有两个数组

数组 A

N1099
N1100
N1100.1
N1100.2
N1100.3
N1100.4
N1100.5
N1101
N1101.1

数组 B

N1100.1
N1100.2
N1100.3
N1100.4
N1100.5
N1100.6
N1101.1

现在您可以看到数组 a 包含 N1100 和 N1101,并且它们在列表 B 中也有“子项”。然后我想删除数组 A 中的父项,使其变为:

比较两个数组后的结果数组

N1099
N1100.1
N1100.2
N1100.3
N1100.4
N1100.5
N1101.1

如何在 php 中做到这一点?

我只发现了诸如合并 2 个数组和过滤重复项之类的问题,而这里的情况并非如此。我想过滤掉不包含点“。”的重复项。在里面。

PHP - How to compare two arrays and remove duplicate values

PHP - Merging two array into one array (also Remove Duplicates)

【问题讨论】:

  • 不清楚您要做什么。列表是指数组吗?
  • 循环遍历第一个数组。对于每个值,如果它存在于另一个数组中,则保留它。如果它在另一个数组中不存在,它必须是父级并被删除?不确定这是否是您的数据的工作方式,但这将是我的方法.....编辑哎呀,我看到您想要 N1099 而不是 N1100。我想你必须拆分字符串(爆炸)并检查前半部分
  • Now You can see that array a contains N1100 and 1001 and they also has "children" in list B.。它在哪里?
  • 抱歉拼写错误。是的,这将是一个好主意 RightClick 谢谢会尝试。 =)
  • @anders 也请对答案投票

标签: php arrays


【解决方案1】:

您需要按照以下方式进行操作:-

<?php

$listA = Array('N1099','N1100','N1100.1','N1100.2','N1100.3','N1100.4','N1100.5','N1101','N1101.1');
$listB = Array('N1100.1','N1100.2','N1100.3','N1100.4','N1100.5','N1100.6','N1101.1');
$listC = array();
$listA = array_unique($listA);
foreach($listA as $lisA){
    if(in_array($lisA,$listB) || !in_array($lisA.'.1',$listB)){
        $listC[] = $lisA;
    }
}
echo"<pre/>";print_r($listC);
?>

输出:-https://eval.in/379229

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 2017-08-15
    • 1970-01-01
    • 2012-07-15
    • 2018-11-01
    • 1970-01-01
    • 2020-01-16
    相关资源
    最近更新 更多