PHP中如何基于对象键合并数组对象

PHP中如何基于对象键合并数组对象,php,Php,假设我有一个这样的对象数组 array 0 => object(stdClass) public 'ID' => string '1' public 'DATE' => string '26/02/2018' 1 => object(stdClass) public 'ID' => string '2' public 'DATE' => string '27/02/2018' 2

假设我有一个这样的对象数组

array 
  0 => 
    object(stdClass)
      public 'ID' => string '1'
      public 'DATE' => string '26/02/2018'
  1 => 
    object(stdClass)
      public 'ID' => string '2'
      public 'DATE' => string '27/02/2018'
  2 => 
    object(stdClass)
      public 'ID' => string '1'
      public 'DATE' => string '28/02/2018'
  3 => 
    object(stdClass)
      public 'ID' => string '3'
      public 'DATE' => string '29/02/2018'
array 
  0 => 
    object(stdClass)
      public 'ID' => string '1'
      public 'DATE' => string '26/02/2018, 28/02/2018'
  1 => 
    object(stdClass)
      public 'ID' => string '2'
      public 'DA_DATE' => string '26/02/2018'

  2 => 
    object(stdClass)
      public 'ID' => string '3'
      public 'DATE' => string '27/02/2018'
在这里您可以看到有两个ID相同,即ID=1,但日期不同。我想像这样合并相同的id和它们的数据

array 
  0 => 
    object(stdClass)
      public 'ID' => string '1'
      public 'DATE' => string '26/02/2018'
  1 => 
    object(stdClass)
      public 'ID' => string '2'
      public 'DATE' => string '27/02/2018'
  2 => 
    object(stdClass)
      public 'ID' => string '1'
      public 'DATE' => string '28/02/2018'
  3 => 
    object(stdClass)
      public 'ID' => string '3'
      public 'DATE' => string '29/02/2018'
array 
  0 => 
    object(stdClass)
      public 'ID' => string '1'
      public 'DATE' => string '26/02/2018, 28/02/2018'
  1 => 
    object(stdClass)
      public 'ID' => string '2'
      public 'DA_DATE' => string '26/02/2018'

  2 => 
    object(stdClass)
      public 'ID' => string '3'
      public 'DATE' => string '27/02/2018'

如何合并数据,以便为同一id将两个不同的日期合并为一个?

假设您的意思是日期是一个数组:

$grouped = [];

foreach ($items as $item) {
    $grouped[$item->ID]["ID"] = $item->ID;
    $grouped[$item->ID]["DATE"][] = $item->DATE;
}

$grouped = array_values($grouped);

如果希望日期是由逗号分隔的字符串,而不是数组,则:

$grouped = [];

foreach ($items as $item) {
    $grouped[$item->ID]["ID"] = $item->ID;
    $grouped[$item->ID]["DATE"] = isset($grouped[$item->ID]["DATE"]) ? $grouped[$item->ID]["DATE"] . ", " . $item->DATE : $item->DATE;
}

$grouped = array_values($grouped);

到底是什么问题,您能给我们看一些代码并解释什么不起作用吗?如果我使用数组,它只取决于单个数组。这就是为什么我问如何做,因为我不知道如何合并数据。谢谢,它工作得很好。但我需要理解$grouped[$item->ID]部分。你能解释一下吗?@AshisBiswas是数组中的一个逻辑,通过它的
键来识别行
现在我明白了设置$GROUBLED[1][1]后,当转到同一个对象元素时,分组项[1][1]的值将是相同的,但如果它已经有一个日期,则首先检查它并将日期与下一个对象元素键的值连接起来。谢谢你的代码