2013-07-30 89 views
1

我想將數組添加到現有數組。我可以使用array_push添加陣列。唯一的問題是,當試圖添加包含數組鍵的數組時,它會在現有數組中添加一個額外的數組。php - 將數組推入數組 - (推按鍵和數組)

這可能是最好的,如果我告訴你

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" } } 

我真的很感激任何意見。

+0

可能重複【如何價值和重點推進與PHP數組(http://stackoverflow.com/a/2926547/476) – deceze

回答

2

所有你真正想要的是:

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

感謝大家的親切幫助。我想我對數組的工作方式有點困惑。由deceze和xdim222提供的解決方案是正確的。謝謝大家的親切幫助 – andreea115

2

可以使用array_merge功能

$newrow = array_merge($newrow, $thumnail); 
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]; 

但是,如果您通過代碼中的行數獲得付款,請不要這樣做,請保持您的c ODE :) J/K

+0

大家好。 array_merge只能從php 5.4起作用;我需要使用PHP 5.3。我也不能使用xdim222發佈的解決方案,因爲我需要在新的$ newrow數組中放置數組'key和value'。有沒有人有任何建議 – andreea115

+1

@ andreea115 array_merge來自PHP 4.不過,版本4和版本5之間的函數簽名有所不同。從PHP版本5開始,array_merge只接受數組。請參閱:http://www.php.net/manual/en/function.array-merge.php#refsect1-function.array-merge-changelog。 – hdvianna