PHP-对象数组相交和合并保持对象完整

PHP-对象数组相交和合并保持对象完整,php,arrays,object,multidimensional-array,Php,Arrays,Object,Multidimensional Array,我有一个多维数组,其中包含从数据库返回的对象数组: Array ( [0] => Array ( [0] => stdClass Object ( [image_id] => 1 ) [1] => stdClass Object ( [image_i

我有一个多维数组,其中包含从数据库返回的对象数组:

Array ( [0] => Array ( [0] => stdClass Object ( [image_id] => 1 ) [1] => stdClass Object ( [image_id] => 5 ) [2] => stdClass Object ( [image_id] => 6 ) [3] => stdClass Object ( [image_id] => 7 ) ) [1] => Array ( [0] => stdClass Object ( [image_id] => 5 ) [1] => stdClass Object ( [image_id] => 6 ) ) [2] => Array ( [0] => stdClass Object ( [image_id] => 5 ) ) ) 排列 ( [0]=>阵列 ( [0]=>stdClass对象 ( [image_id]=>1 ) [1] =>stdClass对象 ( [image_id]=>5 ) [2] =>stdClass对象 ( [image_id]=>6 ) [3] =>stdClass对象 ( [image_id]=>7 ) ) [1] =>阵列 ( [0]=>stdClass对象 ( [image_id]=>5 ) [1] =>stdClass对象 ( [image_id]=>6 ) ) [2] =>阵列 ( [0]=>stdClass对象 ( [image_id]=>5 ) ) ) 我需要能够与嵌套数组相交,以便只保留所有数组集中存在的图像id。因此,在上面的示例中,这将只返回图像_id=5

我需要将其保留为对象数组,如下所示:

Array ( [0] => stdClass Object ( [image_id] => 5 ) ) 排列 ( [0]=>stdClass对象 ( [image_id]=>5 ) ) 我试过其他帖子的一些代码。这是相似的,但他们正在试图删除重复,这是略有不同的情况

我看到的所有比较数组的情况都是已知数组的情况(即$arr1、$arr2)。这种情况的用户案例可以是任意长度的多数组

任何帮助都将不胜感激,因为我们一直在寻找解决方案


提前感谢

首先,我们需要循环查看图像ID并获得重复的图像ID。然后我们需要重建所需的结构

<?php

$test_array = [
    [
        (object)['image_id' => 1],
        (object)['image_id' => 2],
        (object)['image_id' => 3],
        (object)['image_id' => 4],
        (object)['image_id' => 5],
    ],
    [
        (object)['image_id' => 2],
        (object)['image_id' => 3],
    ],
    [
        (object)['image_id' => 1],
        (object)['image_id' => 2],
        (object)['image_id' => 3],
    ]
];


$first_iteration = true;
$duplicates = [];

foreach ($test_array as $outer_key => $outer_array) {

    $current_array_values = [];
    foreach ($outer_array as $image_id) {
        $current_array_values[] = $image_id->image_id;
    }

    // If first iteration, then we will have
    // no IDs to check against.
    if ($first_iteration) {
        $duplicates = $current_array_values;
        $first_iteration = false;
    } else {
        $duplicates = array_intersect($duplicates, $current_array_values);
    }   
}

$output = [];
foreach($duplicates as $duplicate) {
    $output[] = (object)['image_id' => $duplicate];
}

如果您有任何问题,请告诉我。

您是否尝试自己编写所需的代码,而不是尝试查找其他人编写的代码?您使用的是什么版本的php?我正在本地运行5.5-这将安装在一个新服务器上,该服务器可能有一个更为更新的版本。谢谢您…我现在要尝试一下,看看我是如何获得onAll的测试和工作完美。谢谢你的帮助mkveksas@swood我的荣幸!
array(2) {
  [0]=>
  object(stdClass)#11 (1) {
    ["image_id"]=>
    int(2)
  }
  [1]=>
  object(stdClass)#12 (1) {
    ["image_id"]=>
    int(3)
  }
}