php - 比较两个多维数组然后创建唯一的数组

标签 php arrays multidimensional-array unique

我已经尝试了好几个小时了。

我有两个多维数组

    $newData (
    [0] => Array(
        [id] => 1
        [name] => John
        [sex] => male
    )
    [1] => Array(
        [id] => 2
        [name] => Kenny
        [sex] => male
    )
    [2] => Array(
        [id] => 3
        [name] => Sarah
        [sex] => female
    )
    [3] => Array(
        [id] => 4
        [name] => George
        [sex] => male
    )
)

$oldData (
    [0] => Array(
        [id] => 3
        [name] => Sarah
        [sex] => female
    )
    [1] => Array(
        [id] => 4
        [name] => George
        [sex] => male
    )
    [2] => Array(
        [id] => 5
        [name] => Peter
        [sex] => male
    )
    [3] => Array(
        [id] => 6
        [name] => Lexi
        [sex] => female
    )
)

我需要比较 $newData 和 $oldData 并只获取第一个公共(public)数组之前的新数据。

我的 $newData 将是:

$newData (
[0] => Array(
    [id] => 1
    [name] => John
    [sex] => male
)
[1] => Array(
    [id] => 2
    [name] => Kenny
    [sex] => male
)

)

如果比较 ID 键,我已经尝试了 array_unique 中的所有方法,但没有任何工作正常。

我需要先合并它们吗?映射他们?呸,我不知道,我迷路了。

任何帮助都会很棒

最佳答案

我只想做一个嵌套的 foreach 循环。我不知道您使用的是哪种编程语言,但假设它是 PHP ($):

$tmpArray = array();

foreach($newData as $data1) {

  $duplicate = false;
  foreach($oldData as $data2) {
    if($data1['id'] === $data2['id'] && $data1['name'] === $data2['name'] && $data1['sex'] === $data2['sex']) $duplicate = true;
  }

  if($duplicate === false) $tmpArray[] = $data1;
}

然后您在 $tmpArray 变量中有了所需的数组。您当然可以在之后制作 $newData = $tmpArray;

关于php - 比较两个多维数组然后创建唯一的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16135311/

相关文章:

java - 将字符串变量重新分配给 StringBuffer 对象

javascript - 如何合并包含对象的数组?

javascript - jquery中基于动态变量声明动态数组

php - jQuery 不会在新标签页中打开页面

php - Ajax 将数据传递给 php 脚本

php - Laravel 5.2 migration comment on migration 专栏

arrays - 二维数组 - 检测位置是否在封闭模式内

php - 搜索具有 2 个节点的父节点

javascript - 如何将数组传递给 jquery jaudio 中的函数

ruby - 遍历 Ruby 中的二维数组