Как соединить два многомерных массива?
Решение "в лоб", но работать будет$products = [
	[
		'product_id' => 102966,
		'price'      => 11,
	],
	[
		'product_id' => 102967,
		'price'      => 22,
	]
];

$attributes = [
	[
		'product_id'    => 102966,
		'attr_name'     => 'Диагональ;Длительность ролика',
		'attr_value'    => '2";1 мин, 2 мин, 3 мин, 5 мин',
	],
	[
		'product_id'    => 102967,
		'attr_name'     => 'Выходы;Диагональ;Дополнительная информация',
		'attr_value'    => 'HDMI;2.7";рабочие диапазоны',
	],
];

$products = array_map(function($product) use ( $attributes ) {
	$attribute = array_filter($attributes, function($attribute) use ( $product ) {
		return $attribute['product_id'] === $product['product_id'];
	});

	return array_merge($attribute ? current($attribute) : [], $product);
}, $products);

print_r($products);
Как вариант - преобразовать оба массива в ассоциативные с product_id в роли ключа, а затем пробежаться по второму массиву и добавить в первый недостающие элементы или отдельные атрибуты, если элементы сами есть. Сложность O(N) + O(M), дополнительный расход памяти N+M