PHP: объединить два массива объектов

Массив 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)

Я хочу объединить массивы 1 и 2 в поле «id» и хранить только совпадения из массива 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)

1

Решение

Если ваш объект содержит только свойства, вы можете использовать слияние массивов в этом случае. Конечно, сначала просто используйте цикл. Затем под петлей сделайте if при проверке тех, у кого одни и те же идентификаторы, вам нужно привести их в единый массив, затем снова преобразовать их в объект:

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

Образец Out

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]