У меня есть данные 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));
Я полагаю, что отсутствие $ перед myjsondatas - это просто опечатка ..
извините, я пытаюсь выразить мои данные json в виде слова.
после удаления массива (мой первый комментарий) правильный синтаксис - echo $decoded->{'0'}->pr;
Используйте $decode = json_decode( $myjsondatas , TRUE );
забудьте json_decode, просто сделайте $fullarray = array("pr" => '1', $arr, $arr1);, а затем echo $fullarray[0]['pr'];
полезное чтение: Что такое JSON и зачем его использовать?
В любом случае я сделал ваш синтаксис @Jeff. Вроде все работает. Всем вам, ребята, спасибо за ваше терпение, обучая меня.






индекс - "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
этот массив слишком велик:
array(myjsondatas). сделай это$decode = json_decode($myjsondatas);