Мне нужно вызвать это значение, зарегистрированное в столбце MySQL:
{"0":[{"Type":3,"Seconds":-185}],"1":[{"Type":4,"Seconds":-144}]}
С помощью этой формы я получаю JSON из базы данных MySQL:
$boosterResultant = $mysqli->query('SELECT boosters FROM player_equipment WHERE userId = '.$player['userId'].'')->fetch_assoc()['boosters']; //response: "{\"0\":[{\"Type\":3,\"Seconds\":-185}],\"1\":[{\"Type\":4,\"Seconds\":-144}]}"
Я хочу получить доступ к тому, что в 'Секундах', чтобы изменить его значение, поэтому я использую эту форму для его изменения:
$boosterFinal = json_decode($boosterResultant,true);
$boosterFinal[0][0]['Seconds'] += 36000; //the value is changed successfully
echo "Output:", json_encode($boosterFinal); //out: [[{"Type":3,"Seconds":35815}],[{"Type":4,"Seconds":-144}]]
Поскольку я запускаю $boosterFinal = json_decode($boosterResultant,true);
, я получаю это: [[{"Type":3,"Seconds":-185}],[{"Type":4,"Seconds":-144}]]
, но мне нужно чтобы оставаться таким для обновления позже в БД:
{"0":[{"Type":3,"Seconds":35815}],"1":[{"Type":4,"Seconds":-144}]} //good
//bad: [[{"Type":3,"Seconds":35815}],[{"Type":4,"Seconds":-144}]]
Редактировать: Спасибо @A. Cedano (ссылка ответа на испанском sh форуме: здесь ), я нашел ответ:
//This is the data that comes from the sample DB
$str='{"0":[{"Type":3,"Seconds":-185}],"1":[{"Type":4,"Seconds":-144}]}';
//Don't pass TRUE to json_decode to work as JSON as is
$mJson=json_decode($str);
$mJson->{0}[0]->Seconds+=36000;
//Object Test
echo $mJson; //Output: {"0":[{"Type":3,"Seconds":35815}],"1":[{"Type":4,"Seconds":-144}]}