【问题标题】:PHP: Merge two array of objectsPHP:合并两个对象数组
【发布时间】:2015-01-26 02:42:09
【问题描述】:

数组 1:

array (size=1)
   0 => 
      object(stdClass)[93]
         public 'case' => string '12571' (length=5)
         public 'status' => string 'aktiv' (length=5)
         public 'id' => string '001345821' (length=9)
         public 'expires' => string '1392681600' (length=10)

数组 2:

array (size=66)
   0 => 
     object(stdClass)[25]
       public 'id' => string '001345821' (length=9)
       public 'date' => int 1415602800
       public 'amount' => string '1069.31' (length=7)
   1 => 
     object(stdClass)[26]
       public 'id' => string '001345680' (length=9)
       public 'date' => int 1415602800
       public 'amount' => string '1035.00' (length=7)

我想在“id”字段上合并数组 1 和 2,并且只保留数组 1 中的匹配项。

我想要什么:

array ()
   0 =>
     object(stdClass)
       public 'case' => string '1257' (length=5)
       public 'status' => string 'aktiv' (length=5)
       public 'id' => string '001345821' (length=9)
       public 'expires' => string '1392681600' (length=10)
       public 'date' => int 1415602800
       public 'amount' => string '1069.31' (length=7)

【问题讨论】:

    标签: php arrays object merge


    【解决方案1】:

    如果你的对象只包含属性,你可以在这种情况下使用数组合并。当然,首先,只需使用循环。然后在循环下,让您的 if 检查那些共享相同 ID 的人,然后您需要将它们转换为数组,然后将它们合并,然后再次将它们重新转换为对象:

    foreach($array2 as &$value2) {
        foreach($array1 as $value1) {
            if($value2->id == $value1->id) {
                $value2 = (object) array_merge((array) $value2, (array) $value1);
            }
        }
    }
    

    Sample Out

    【讨论】:

      猜你喜欢
      • 2020-03-22
      • 2021-03-08
      • 2012-08-06
      • 2020-02-04
      • 1970-01-01
      • 2022-01-04
      • 2019-12-02
      相关资源
      最近更新 更多