php - выдвинуть массив в массив -(нажатие клавиши и массива)

Я пытаюсь добавить массив в существующий массив. Я могу добавить массив с помощью array_push. Единственная проблема заключается в том, что при попытке добавить массив, содержащий ключи массива, он добавляет дополнительный массив в существующий массив.

Возможно, будет лучше, если я покажу вам

foreach ($fields as $f)
{  
    if ($f == 'Thumbnail')
    {
        $thumnail = array('Thumbnail' => Assets::getProductThumbnail($row['id'] );
        array_push($newrow, $thumnail);
    }
    else
    { 
        $newrow[$f] = $row[$f];
    }
}

Вышеуказанный массив fields является частью массива, который был динамически передан из запроса SQl, а затем передан в новый массив с именем $newrow, Однако к этому $newrow массив, мне нужно добавить поля миниатюрного массива.

Ниже вывод (используя var_dump) из приведенного выше кода. Единственная проблема с кодом заключается в том, что я не хочу создавать отдельный массив внутри массивов. Мне просто нужно добавить его в массив.

 array(4) { ["Product ID"]=> string(7) "1007520"
           ["SKU"]=> string(5) "G1505"
           ["Name"]=> string(22) "150mm Oval Scale Ruler"            
           array(1) { ["Thumbnail"]=> string(77) "thumbnails/products/5036228.jpg" } }

Буду очень признателен за любые советы.

3 ответа

Решение

Все, что вы действительно хотите, это:

$newrow['Thumbnail'] = Assets::getProductThumbnail($row['id']);

Вы можете использовать функцию array_merge

$newrow = array_merge($newrow, $thumnail);

Кроме того, вы также можете назначить его непосредственно в $newrow:

if ($f == 'Thumbnail')
  $newrow[$f] = Assets::getProductThumbnail($row['id']);
else
...

Или, если вы хотите, чтобы ваш код был короче:

foreach($fields as $f)
  $newrow[$f] = ($f == 'Thumbnail')? Assets::getProductThumbnail($row['id']) : $row[$f];

Но если вам платят по количеству строк в вашем коде, не делайте этого, оставайтесь в своем коде:) j/k

Другие вопросы по тегам