前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP怎么获取二维数组之间的差值

PHP怎么获取二维数组之间的差值

作者头像
沈唁
发布2019-05-21 22:59:26
1.7K0
发布2019-05-21 22:59:26
举报
文章被收录于专栏:沈唁志

PHP 对于数组的相关操作,可以说是封装的很完善了,基本上都有函数

前几天写了一个获取思否某标签下文章的采集Api,为了不想重复推送,就加了一个新旧文件比较的操作,其实就是两个数组合并取差值

结果想都没想,直接用了函数

代码语言:javascript
复制
array_unique(array_merge($a, $b));

意思是合并两个数组,然后移除数组中重复的值,挂了一天后发现有点问题,有多个文章的时候,只推送一条

看一下文档,发现当几个数组元素的值相等时,array_unique()只保留第一个元素,其他的元素被删除

所以就不能这么写,简单写个demo

代码语言:javascript
复制
$arr1 = [
    0 => [
        'title' => 'test0',
        'url' => 'http://qq52o.me/110.html',
    ],
    1 => [
        'title' => 'test1',
        'url' => 'http://qq52o.me/111.html',
    ],
    2 => [
        'title' => 'test2',
        'url' => 'http://qq52o.me/112.html',
    ],
];

$arr2 = [
    0 => [
        'title' => 'test0',
        'url' => 'http://qq52o.me/110.html',
    ],
    1 => [
        'title' => 'test1',
        'url' => 'http://qq52o.me/111.html',
    ],
    2 => [
        'title' => 'test2',
        'url' => 'http://qq52o.me/112.html',
    ],
    3 => [
        'title' => 'test3',
        'url' => 'http://qq52o.me/113.html',
    ],
];

$arr1$arr2中我需要去掉$arr1$arr2相同的部分

也就是我需要得到['title' => 'test3','url' => 'http://qq52o.me/113.html']

两个数组中title是唯一的,所以通过key操作不适用in_array()

直接上函数吧

代码语言:javascript
复制
function getDiffArrayByPk($arr1, $arr2, $pk='title')
{
    $res = [];
    foreach($arr2 as $item) {
        $tmpArr[$item[$pk]] = $item;
    }
    foreach($arr1 as $v) {
        if(!isset($tmpArr[$v[$pk]])) {
            $res[] = $v;
        }
    }
    return $res;
}

当没有唯一id的时候,可以使用in_array()

代码语言:javascript
复制
function getDiffArrayByFilter($arr1, $arr2)
{
    return array_filter(
        $arr1, function ($v) use ($arr2) {
            return !in_array($v, $arr2);
        }
    );
}

当然你用两层foreach循环比较也行

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档