Здравствуйте. Есть массив вида PHP: $array = array("key1" => "value1"); Необходимо добавить в этот массив новый элемент, чтоб получилось так: PHP: $array = array("key1" => "value1", "key2" => "value2"); . Пробовал так: PHP: $nowarr[$_SESSION["username"]] = $_POST["num"]; но выдаёт ошибку: Cannot use object of type stdClass as array... Так вот, как, собственно его туда запихнуть при том, что я не знаю какие ключи и значения будут записыватся?
Я понимаю что объект. Но как его сделать массивом? Я получаю этот массив с помощью json_decode. PHP: <?php if(isset($_POST["do"])) { if($_POST["do"] == "rate") { if(isset($_POST["num"])) { $db = mysqli_connect("localhost", "root", "", "fan-mc"); $nowres = mysqli_query($db, "SELECT `rating` FROM `fmc-news` WHERE `id` = '{$_POST["new-id"]}'"); $nowrow = mysqli_fetch_assoc($nowres); $nowjson = $nowrow["rating"]; if(empty($nowjson) || $nowjson == '') { $nowarr[$_SESSION["username"]] = $_POST["num"]; $newjson = json_encode($nowarr); } else { $nowarr = json_decode($nowjson); print_r($nowarr); $username = $_SESSION["username"]; if(!array_key_exists($_SESSION["username"], $nowarr)) { $nowarr[$username] = $_POST["num"]; $newjson = json_encode($nowarr); } else { die("already_rated"); } } mysqli_query($db, "UPDATE `fmc-news` SET `rating` = '".mysqli_real_escape_string($db, $newjson)."' WHERE `id` = '{$_POST["new-id"]}'") or die(mysqli_error($db)); } } } ?> --- Добавлено --- Не помогло.
Опять спешишь... Не вникаешь в суть дела и пишешь первое, что пришло. Это никак не исправляет проблему, более того, проблемы, которую это могло бы исправить, в принципе не существует в PHP. У json_decode можно вторым параметром указать TRUE, тогда он вернет не объект, а массив. Подробнее - тут https://php.net/manual/ru/function.json-decode
Возьми себе за правило всегда искать в документации функции, которые используешь и в которых на 100% не уверен.