2017-01-12 13 views
0

Это настолько странно, что я работаю над этим в течение трех дней, просматривая веб-страницы, чтобы найти решение и внести свои изменения, но до сих пор не повезло. Я пытаюсь получить продукты amazon на свой сайт с Laravel и этот отличный пакет от JoeDawson/amazon-ecs. , когда я выполнить команду из контроллера, как это показано ниже:JSON decode, Parse JSON response и Undefined Index на целочисленном значении

$results = Amazon::search('tv')->json(); 
dd($results) 

Я могу видеть все данные из Amazon, как это:

array:2 [ 
    "OperationRequest" => array:4 [ 
    ... 
    ] 
    "Items" => array:5 [ 
    ... 
    "Item" => array:10 [ 
     ... 
     "ItemAttributes" => array:22 [ 
      "Binding" => "Electronics" 
      "Brand" => "LG Electronics" 
      "Color" => "Black" 
      "EAN" => "8806087769050" 
      "EANList" => array:1 [ 
      "EANListElement" => "8806087769050" 
      ] 
      "Feature" => array:4 [ 
      0 => "High dynamic contrast ratio (5M:1) - richer colors, deeper blacks and greater depth of image" 
      1 => "Gaming and cinema modes - dedicated features to optimise viewing experiences" 
      2 => "USB AutoRun - media content from USB stick runs automatically as soon as TV is switched on" 
      3 => "Detachable base - easy way to wall mount your TV and enjoy a viewing experience while saving space" 
      ] 
      "ItemDimensions" => array:4 [ 
      "Height" => "226" 
      "Length" => "1560" 
      "Weight" => "948" 
      "Width" => "2526" 
      ] 
      "Label" => "LG" 
      "ListPrice" => array:3 [ 
      "Amount" => "19999" 
      "CurrencyCode" => "GBP" 
      "FormattedPrice" => "£199.99" 
      ] 
     ] 
    ] 
    ] 
] 

Или весь результат здесь: http://pastebin.com/TGFgCbAz

На мой взгляд, у меня есть доступ ко всем значениям, кроме значений внутри ListPrice, который возвращает «Неопределенный индекс»

@foreach ($results['Items']['Item'] as $amazon) 
{{ $amazon['ItemAttributes']['Title'] }} //returns true with the value 
{{ $amazon['ItemAttributes']['ListPrice']['FormattedPrice'] }} //returns Undefined index: ListPrice 
@endforeach 

Я попробовал то же самое на стороне контроллера:

foreach ($amazon_results['Items']['Item'] as $amazon) { 
     print_r($amazon['ItemAttributes']['ListPrice']['FormattedPrice']); 
    } 

Это возвращает значения FormattedPrice первого затем бросает ту же ошибку.

£ 199,99 £ 34,99 £ 194,50 Ой, похоже, что-то пошло не так.

1/1 ErrorException в HomeController.php строке 24: Undefined индекс: ListPrice

Почему я не в состоянии получить это значение?

+0

Возможно, вы захотите включить фактические данные, которые вы возвращаете, а не выдержку, которая была обработана чем-либо. Может быть, 'var_dump ($ results)'? – miken32

+0

json слишком много, что не может быть добавлено здесь, но я буду обновлять сообщение с данными json, как это выглядит, спасибо – user2682025

+0

Хороший способ найти объект в массиве, если вы потеряны, - это использовать функцию var_dump () это может помочь вам. Я надеюсь, что это так. –

ответ

1

Ненавижу быть носителем плохих новостей, но это просто, что нет никакого массива ListPrice для всех предметов. В полной дампе у вас было десять предметов. Два из них (индекс 7 и индекс 9) не содержали массив ListPrice. Я бы предложил проверить, чтобы он был первым:

@foreach ($results['Items']['Item'] as $amazon) 
{{ $amazon['ItemAttributes']['Title'] }} 
@if (array_key_exists('ListPrice', $amazon['ItemAttributes'])) 
    {{ $amazon['ItemAttributes']['ListPrice']['FormattedPrice'] }} 
@else 
    No list price 
@endif 
@endforeach 
+0

Спасибо Bro за все – user2682025

 Смежные вопросы

  • Нет связанных вопросов^_^