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
        )
)
4

2 に答える 2

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++;
}
于 2012-09-15T15:44:08.380 に答える
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
                )
)
于 2012-09-15T15:47:06.423 に答える