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]的值将是相同的,但如果它已经有一个日期,则首先检查它并将日期与下一个对象元素键的值连接起来。谢谢你的代码