return key =>与PHP foreach循环的值数组对

时间:2014-11-10 22:23:47

标签: php arrays amazon-web-services

所以我在这里跟着几个问题尝试让它发挥作用......但我似乎无法破解它。基本上我正在尝试做的是遍历XML文件并返回key =>该文件中元素的值对。对于更多上下文,我试图将项目的ASIN(亚马逊API)存储为密钥,并将其图像URL存储为数组中的值。

这是XML文件的结构,以防这些文件可以帮助某人确定我的代码存在缺陷:

<Items>
<Request>
<IsValid>True</IsValid>
<ItemSearchRequest>
<Keywords>biology</Keywords>
<ResponseGroup>Images</ResponseGroup>
<SearchIndex>Books</SearchIndex>
</ItemSearchRequest>
</Request>
<TotalResults>280951</TotalResults>
<TotalPages>28096</TotalPages>
<MoreSearchResultsUrl>
http://www.amazon.com/gp/redirect.html?camp=2025&creative=386001&location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fsearch%3Fkeywords%3Dbiology%26url%3Dsearch-alias%253Dstripbooks&linkCode=xm2&tag=comparcom035-20&SubscriptionId=AKIAIQ7UEDX4CFRSBDXA
</MoreSearchResultsUrl>
<Item>
<ASIN>0321558235</ASIN>
<SmallImage>
<URL>
http://ecx.images-amazon.com/images/I/41UWC4kbxGL._SL75_.jpg
</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">62</Width>
</SmallImage>

这是我正在使用的代码:

$xml = simplexml_load_file($SignedRequest);
$image = simplexml_load_file($getimage);



foreach ($image->Items->Item->ASIN as $key => $value) {
            $array[$key] = $image->Items->Item->SmallImage->URL;

        }

print_r($array);

我的输出如下:

Array ( [ASIN] => SimpleXMLElement Object ( [0] => http://ecx.images-amazon.com/images/I/41UWC4kbxGL._SL75_.jpg ) )

我觉得我很接近.....但是有谁可以指出我在这里做错了什么?我似乎无法让我的循环正确分配键和值而不会抛出某种错误。

2 个答案:

答案 0 :(得分:1)

你很接近,你只需要将值转换为字符串:

$array[$key] = (string) $image->Items->Item->SmallImage->URL;

答案 1 :(得分:1)

试试这个:

$item = $image->Items->Item;
$array[(string)$item->ASIN] = (string)$item->SmallImage->URL;

<强>输出:

Array
(
    [0321558235] => http://ecx.images-amazon.com/images/I/41UWC4kbxGL._SL75_.jpg            
)