$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']