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