<?php
$poorly_merged = [
(object)["id" => "5", "unit" => 1],
(object)["id" => "3", "text" => "three"],
(object)["id" => "1", "text" => "one"],
(object)["id" => "2", "text" => "two"],
(object)["id" => "4", "text" => "four"],
(object)["id" => "5", "text" => "five"],
(object)["id" => "3", "unit" => 0],
(object)["id" => "1", "unit" => "0"],
(object)["id" => "2", "unit" => 0],
(object)["id" => "4", "unit" => "0"]
];
$output = [];
foreach ($poorly_merged as $object) {
if (!isset($output[$object->id])) {
$output[$object->id] = $object;
} else {
foreach ($object as $property => $value) {
$output[$object->id]->{$property} = $value;
}
}
}
ksort($output); // optionally order by ids
var_export(array_values($output));
preferences:
59.3 ms | 402 KiB | 5 Q