Доступ к данным в массиве - не-объектная ошибка PHP - PullRequest
0 голосов
/ 26 октября 2018

Я заполняю массив следующим образом:

 $POarray = array();
 foreach($orders as $order)
    {
        $total = OrderItems::where('OrderID', $order->OrderID)->sum('TotalPrice') * (1 + $LRmarkup);
        $arraydata = array(
            'Name' => $order->OrderNumber, 
            'Total' => $total);

        $POarray[] = $arraydata;    

    }

В результате содержимое переменной $ POarray выглядит следующим образом:

[
 {
  "Name": "DS-BS-18102654",
  "Total": 241.4655
 },
 {
  "Name": "test test",
  "Total": "600.00"
 }
]

Я пытаюсь получить доступ к этим данным, какэто:

 $purchase1name = $POarray[0]->Name;
 $purchase1total = $POarray[0]->Total;

И я получаю эту ошибку:

 "Trying to get property of non-object"

Разве это не должно работать?

Спасибо, что нашли время ответить.

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Вы должны сделать это после декодирования, используя json_decode(),

<?php

$key='[
 {
  "Name": "DS-BS-18102654",
  "Total": 241.4655
 },
 {
  "Name": "test test",
  "Total": "600.00"
 }
]';

$POarray = json_decode($key);

echo $POarray[0]->Name;
echo $POarray[0]->Total;

?>

DEMO: https://3v4l.org/JvCam

0 голосов
/ 26 октября 2018

Вы также можете использовать это.

array_get($POarray[0], 'Name');
array_get($POarray[0], 'Total');

Для получения дополнительной информации: https://laravel.com/docs/5.7/helpers

0 голосов
/ 26 октября 2018

$ POarray не является объектом.

Попробуйте:

$purchase1name = $POarray[0]['Name'];
$purchase1total = $POarray[0]['Total'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...