Задать вопрос
Kushelbek
@Kushelbek
Web - developer

Как заполнить ключ массива значениями другого массива php?

Добрый день, подскажите пожалуйста как объединить два массива в один?
Первый массив:
$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'] пишется с пустым значением.

Заранее спасибо.
  • Вопрос задан
  • 878 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@dzhebrak
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']
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Ты сам определись сначала, тебе объединить, или заменить.
Если объединить, то пустая запись и должна остаться.
если тебе тупо тупо положить в data['blog_cat_id'] то что лежит в $allSpecCat, то надо просто тупо положить в data['blog_cat_id'] то что лежит в $allSpecCat
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы