Laravel PHP Tricky Ошибка неопределенного индекса - PullRequest
0 голосов
/ 04 июня 2018

Я бьюсь головой об стену, пытаясь выяснить, какую ошибку я получаю в laravel (версия 5.6.23, я проверил :(). В основном я читаю ассоциативный массив, созданный JSONdecode, и один вызов возвращаетсяошибка:

Undefined index : Itemprice  //this is the index name

Но у меня есть dd () для всего JSON на консоль, и этот индекс, безусловно, существует, не говоря уже о том, что он работал ранее сегодня. Кроме того, работает isset () или array_key_existsоба возвращают значение true для этого точного индекса, поэтому даже сам код согласен с тем, что этот индекс существует. Я понятия не имею, что является причиной ошибки или куда идти отсюда.

Вот код:

 foreach($items['ListOrderItemsResult']['OrderItems'] as $item)
    {
    //this is the problem line below
    $price = $item['ItemPrice']['Amount']; //ItemPrice is problem

    $productname = $item['Title']
    $quantity = $item['QuantityOrdered']; 
    $asin = $item['ASIN'];

    $total = $price * $quantity;
    }

и здесь это dd фактического массива (над ним - "$ item") с удалением некоторых личных данных

   array:11 [▼
  "QuantityOrdered" => "5"
  "Title" => "Two Pack...."
  "PromotionDiscount" => array:2 
   "IsGift" => "false"
   "ASIN" => "..."
  "SellerSKU" => "..."
  "OrderItemId" => "..."
  "ProductInfo" => array:1 
  "QuantityShipped" => "5"
   "ItemPrice" => array:2 [▼
  "CurrencyCode" => "USD"
   "Amount" => "30000"
   ]
   "ItemTax" => array:2 [▶]
  ]

1 Ответ

0 голосов
/ 04 июня 2018

Ошибка указывает, что Itemprice не является допустимым индексом.В своем примере кода вы пишете ItemPrice, но ошибка ссылается на место, где вы этого не делали, дважды проверьте код и обратите внимание, что индексирование чувствительно к регистру.

Ошибка вряд ли будет с того местаВы упомянули, или индекс не определен в более поздней части вашего массива.

Если вы не уверены, установлена ​​ли переменная, я предлагаю сделать что-то вроде следующего:

$price = isset($item['ItemPrice']['Amount']) ? $item['ItemPrice']['Amount'] : null;

или сокращенный синтаксис

$price = $item['ItemPrice']['Amount'] ?? null; 
...