2012-09-15 91 views
0

我想使用下面的代碼將值添加到數組,但它似乎只會導致1項(最後一個在循環中)被添加到數組中。向嵌套數組中添加值

$awin_products = array(); 

foreach($awinprices as $value){ 
foreach($value as $obj){   
    $awin_products[name] = (string)$obj->sName; 
    $awin_products[imageUrl] = (string)$obj->sAwThumbUrl; 
    } 
} 
print_r($awin_products); 

這可能是很簡單的修復,但到目前爲止我還沒有找到答案。

編輯:我在尋找這樣的輸出:

Array 
(
    [0] => Array 
     (
      [name] => Item 1 Name 
      [imageUrl] => http://example.com/item1.jpg 
     ) 
    [1] => Array 
     (
      [name] => Item 2 Name 
      [imageUrl] => http://example.com/item2.jpg 
     ) 
    [2] => Array 
     (
      [name] => Item 3 Name 
      [imageUrl] => http://example.com/item3.jpg 
     ) 
    [3] => Array 
     (
      [name] => Item 4 Name 
      [imageUrl] => http://example.com/item4.jpg 
     ) 
) 

回答

2

你需要以下

$awin_products = array(); 
$i = 0; 
foreach($awinprices as $value){ 
    foreach($value as $obj){   
     $awin_products[$i]['name'] = (string)$obj->sName; 
     $awin_products[$i]['imageUrl'] = (string)$obj->sAwThumbUrl; 
     $i++; 
    } 
} 

你將得到的結構是這樣的:

Array 
(
      [0] => Array 
       (
        [name] => name 
        [imageUrl] => url 
       ) 
      [1] => Array 
       (
        [name] => name1 
        [imageUrl] => url1 
       ) 
) 
+0

不是我正在尋找的結構。看到我上面的編輯。 – sr83

+0

@ sr83由於您沒有發佈期望的結構,因此很難獲得您想要的結果。見編輯的答案 –

4

你在寫作上的每個運行相同的價值觀:

foreach($value as $obj){   
    $awin_products[name] = (string)$obj->sName; 
    $awin_products[imageUrl] = (string)$obj->sAwThumbUrl; 
} 

你需要改變你在哪裏寫;也許像這樣的東西:

$i = 0; 
foreach($awinprices as $value){ 
    $awin_products[$i] = array(); 
    foreach($value as $obj){ 
     $awin_products[$i][]['name'] = (string)$obj->sName; 
     $awin_products[$i][]['imageUrl'] = (string)$obj->sAwThumbUrl; 
    } 
    $i++; 
} 
+1

甚至更​​好'$ awin_products [$ i] [」名字']' –

+0

你是對的 - 那更優雅。你可以編輯我的答案來添加它嗎? – andrewsi

+0

nerdklers寫道我在想什麼 – Tom