Сравнить два разных ассоциативных массива в php?
А зачем считать длинну массива если все равно все перебираете? Запускаете 1 foreach в нем другой и проводите свои махинации.
Так же обратите внимание на array_diff_assoc и други функции работы с массивами. Например in_array  и т.д.
Не совсем понимаю Вы сравниваете зависимо от ключей или нет?
общая идея  ,допустим у Вас массивы $a  и $bforeach ($a as $key=>$val){
		foreach($b as $k=>$v){
				if( $val['product_id'] === $v['id']){
							$a[$key]['type'] = $v['title']; // не совсем понял, что вам нужно сюда писать 
			
			}
		}
}