doushe8577 2019-05-26 13:23
浏览 39
已采纳

数组差异和元素部分相等

I would like to compare two arrays excluding elements partially equal.

I have reached the following result:

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
21 22 23 24 25

The desired result is:

21 22 23 24 25

Attempt:

$aa = array("1 2 3 4 5", "6 7 8 9 10", "11 12 13 14 15", "16 17 18 19 20", "21 22 23 24 25");
$bb = array("1 2", "6 7 8", "11 12 13 14", "16 17 18 19 20");
$final = array_diff($aa, $bb);
print_r($final)
  • 写回答

1条回答 默认 最新

  • dongzhu7329 2019-05-26 13:49
    关注

    You can use preg_grep in order to not have to do any manipulation the the data.
    This will regex to see what is matching and then you just use array_diff.

    $aa = array("1 2 3 4 5", "6 7 8 9 10", "11 12 13 14 15", "16 17 18 19 20", "21 22 23 24 25");
    $bb = array("1 2", "6 7 8", "11 12 13 14", "16 17 18 19 20");
    
    $exclude = [];
    foreach($bb as $b){
        $exclude = array_merge($exclude, preg_grep("/^". preg_quote($b) . "/", $aa));
    }
    $final = array_diff($aa, $exclude);
    
    print_r($final);
    

    https://3v4l.org/XI9Jd

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解