ключ возврата => пара значений массива с циклом PHP foreach

0

Поэтому я поставил перед собой несколько вопросов, чтобы попытаться заставить это работать... но я просто не могу его взломать. По существу, что я пытаюсь сделать, это цикл через XML файл и возвращать пары ключей => для элементов из этого файла. В другом контексте я пытаюсь сохранить элемент ASIN (Amazon 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 ) )

Я думаю, что я близок... но может ли кто-нибудь указать, что я здесь делаю неправильно? Кажется, я не могу заставить мой цикл правильно назначать ключ и значение, не бросая какую-то ошибку.

Теги:
arrays
amazon-web-services

2 ответа

1

Вы близки, вам просто нужно указать значение как строку:

$array[$key] = (string) $image->Items->Item->SmallImage->URL;
  • 0
    да, это работает. хотя мне приходилось отбрасывать обе стороны как струну, а не только правую сторону. также пришлось изменить переменную $ key на полный путь XML, чтобы заставить его работать. моя проблема сейчас в том, что мой print_r отображает только первую пару ключ-значение. В моем XML-файле около 10 ASIN ... есть идеи, почему мой цикл не отображает все?
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            
)
  • 0
    литье обеих сторон как строки - вот что мне нужно было сделать ... спасибо за это! Моя проблема сейчас в том, что мой print_r не отображает весь массив .... только первую пару ключ => значение. есть идеи?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню