php - 将数组推入数组 - (同时推送键和数组)

时间:2013-07-30 11:13:42

标签: php arrays array-push

我正在尝试将数组添加到现有数组中。我可以使用 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];
    }
}

上面的字段数组是从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 个答案:

答案 0 :(得分:2)

您可以使用array_merge功能

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

答案 1 :(得分:2)

你真正想要的只是:

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

答案 2 :(得分:1)

或者,您也可以直接将其分配给$ 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