Как получить доступ к отсортированным декодированным массивам Json в PHP?

У меня есть данные 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;, я получаю сообщение об ошибке:

Parse error: syntax error, unexpected '[', expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$'

Как я могу получить доступ к данным из массивов 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));

этот массив слишком велик: array(myjsondatas). сделай это $decode = json_decode($myjsondatas);

Jeff 13.09.2018 15:45

Я полагаю, что отсутствие $ перед myjsondatas - это просто опечатка ..

Jeff 13.09.2018 15:46

извините, я пытаюсь выразить мои данные json в виде слова.

Dianne Amparo 13.09.2018 15:49

после удаления массива (мой первый комментарий) правильный синтаксис - echo $decoded->{'0'}->pr;

Jeff 13.09.2018 15:52

Используйте $decode = json_decode( $myjsondatas , TRUE );

Michel 13.09.2018 15:53
после вашего редактирования: значит, jsondatas - это даже не json, а простой массив? Зачем тогда json_decode ??
Jeff 13.09.2018 15:53

забудьте json_decode, просто сделайте $fullarray = array("pr" => '1', $arr, $arr1);, а затем echo $fullarray[0]['pr'];

Jeff 13.09.2018 15:55

полезное чтение: Что такое JSON и зачем его использовать?

Jeff 13.09.2018 15:56

В любом случае я сделал ваш синтаксис @Jeff. Вроде все работает. Всем вам, ребята, спасибо за ваше терпение, обучая меня.

Dianne Amparo 13.09.2018 15:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
9
41
1

Ответы 1

индекс - "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;

Выход :

object(stdClass)[2]

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

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

myjsondata->0->pr gives : 2

Другие вопросы по теме