2012-09-15 65 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