PHP 比较两个关联数组并创建一个具有匹配项的新数组的最佳方法

标签 php mysql arrays object multidimensional-array

图像我们有 2 个 assocs 数组:

1

array 
  0 => 
    object(stdClass)
      public 'id' => string '1' 
      public 'desc' => string 'Lorem Ipsum' 
  1 => 
    object(stdClass)
      public 'id' => string '5' 
      public 'desc' => string 'Lorem Ipsum' 
  2 => 
    object(stdClass)
      public 'id' => string '7' 
      public 'desc' => string 'Lorem Ipsum' 
  3 => 
    object(stdClass)
      public 'id' => string '8' 
      public 'desc' => string 'Lorem Ipsum' 
  4 => 
    object(stdClass)
      public 'id' => string '12' 
      public 'desc' => string 'Lorem Ipsum' 
  5 => 
    object(stdClass)
      public 'id' => string '13' 
      public 'desc' => string 'Lorem Ipsum' 

2

array 
  0 => 
    object(stdClass)
      public 'id' => string '2' 
      public 'desc' => string 'Lorem Ipsum' 
  1 => 
    object(stdClass)
      public 'id' => string '5' 
      public 'desc' => string 'Lorem Ipsum' 
  2 => 
    object(stdClass)
      public 'id' => string '7' 
      public 'desc' => string 'Lorem Ipsum' 
  3 => 
    object(stdClass)
      public 'id' => string '58' 
      public 'desc' => string 'Lorem Ipsum' 
  4 => 
    object(stdClass)
      public 'id' => string '66' 
      public 'desc' => string 'Lorem Ipsum' 
  5 => 
    object(stdClass)
      public 'id' => string '78' 
      public 'desc' => string 'Lorem Ipsum' 

创建一个包含所有与“id”匹配的条目的新数组的最佳方法是什么?基本上就像在包含此数据的 2 个表上使用 INNER JOIN 执行 sql 查询一样。

结果应如下所示:

array 
  0 =>
    object(stdClass)
      public 'id' => string '5' 
      public 'desc' => string 'Lorem Ipsum' 
  1 => 
    object(stdClass)
      public 'id' => string '7' 
      public 'desc' => string 'Lorem Ipsum' 

我尝试了一下,但是做一个数组映射并检查每个对象是否在另一个数组中存在等效项似乎不是最好的解决方案。

谢谢

最佳答案

这对我有用:

<?php

$arr1 = array(
    (object) array(
        'id' => '4',
        'desc' => 'Four'
    ),
    (object) array(
        'id' => '5',
        'desc' => 'Five'
    ),
    (object) array(
        'id' => '3',
        'desc' => 'Three'
    )
);

$arr2 = array(
    (object) array(
        'id' => '2',
        'desc' => 'Two'
    ),
    (object) array(
        'id' => '4',
        'desc' => 'Four'
    ),
    (object) array(
        'id' => '6',
        'desc' => 'Six'
    )
);

$arr3 = array();
foreach( $arr1 as $obj1 ){
    foreach( $arr2 as $obj2 ){
        if( $obj1->id == $obj2->id ){
            $arr3[] = $obj1;
            break;
        }
    }
}

echo '<pre>';
print_r( $arr3 );
echo '</pre>';

关于PHP 比较两个关联数组并创建一个具有匹配项的新数组的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45756683/

相关文章:

mysql - 如何在mysql中查询重复的字符串条目

mysql - Python 列表框在请求之前显示但在请求之后未填充

javascript - 将数组拆分为二维数组 : Is There a Better Solution?

c - 如何读取文件并验证输入?

php mysql插入多个单词

php - Laravel 命令短选项

php - 工具集表中的第一行具有黑色背景

c# - 将数据插入数据 GridView c#

PHP:从数组中获取两个日期之间的元素

php - jQuery AJAX POST 给出 undefined index