Как получить доступ к различным декодированным массивам Json в PHP? - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть данные JSON в следующем формате:

{
   "pr":"1",
   "0":{
      "pr":"2",
      "rfq":"2"
   },
   "1":{
      "pr":"3",
      "rfq":"3"
   }
}

Я пытаюсь декодировать этот JSON, и когда я получаю первый доступ к таким данным:

$decode = json_decode( array(myjsondatas));
echo $decode->pr;

печатает 1.

Но когда я пытаюсь получить доступ к массиву 0 и 1, используя этот синтаксис $decode->[0]->pr;, выдает ошибку:

Ошибка разбора: синтаксическая ошибка, неожиданный '[', ожидаемый идентификатор (T_STRING) или переменная (T_VARIABLE) или '{' или '$'

Как получить доступ к данным из массива 0 и 1?

PS: Вот как я сделал, чтобы мои данные json 'myjsondatas' не являлись переменными

$arr = array("pr" => '2' ,  "rfq" => '2');
$arr1 = array("pr" => '3' ,  "rfq" => '3');

$json = json_encode(array("pr" => '1', $arr, $arr1));

1 Ответ

0 голосов
/ 13 сентября 2018

индекс "0", а не 0

Вы можете использовать переменную для хранения индекса, как показано ниже:

$myjsondata = '{
    "pr":"1",
    "0":{
        "pr":"2",
        "rfq":"2"
    },
    "1":{
        "pr":"3",
        "rfq":"3"
    }
}';

$decode = json_decode($myjsondata);

$someIndex = "0";

var_dump($decode->$someIndex);

echo "myjsondata->0->pr gives : " . $decode->$someIndex->pr;

Выход:

объект (StdClass) [2]

public 'pr' => string '2' (length = 1)

public 'rfq' => string '2' (length = 1)

myjsondata-> 0-> pr дает: 2

...