$allSpecCat = [];
foreach($specsCatId as $sci)
{
$allSpecCat = [
'blog_cat_id' => $sci->id,
];
}$data = [
'name' => $name,
'guid' => $idspec,
'blog_cat_id' => '',
'created_at' => date("Y-m-d H:i:s"),
'updated_at' => date("Y-m-d H:i:s"),
];$res = array_merge($data, $allSpecCat);
var_dump($res);data['blog_cat_id'] остается пустым, потому что массив $data одномерный, а $allSpecCat - двумерный. array_merge не находит соответствующих ключей из массива $data в массиве $allSpecCat, и поэтому добавляет $data в результирующий массив без изменений. Затем в конец результирующего массив добавляются значения из массива $allSpecCat с числовыми индексами.Так понятно же, что хочу значения из $allSpecCat['blog_cat_id'] перенести в $data['blog_cat_id'].
# если $allSpecCat - двумерный массив и нужно получить все значения из него
$data['blog_cat_id'] = array_map(function($v) {
return $v['blog_cat_id'];
}, $allSpecCat);
# если $allSpecCat - ассоциативный массив
$data['blog_cat_id'] = $allSpecCat['blog_cat_id']