За последние 24 часа нас посетили 31839 программистов и 1364 робота. Сейчас ищут 976 программистов ...

Добавление нового элемента с ключом в ассоциативный массив

Тема в разделе "PHP для новичков", создана пользователем SamyRed, 1 дек 2016.

  1. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Здравствуйте. Есть массив вида
    PHP:
    1. $array = array("key1" => "value1");
    Необходимо добавить в этот массив новый элемент, чтоб получилось так:
    PHP:
    1. $array = array("key1" => "value1", "key2" => "value2");
    .
    Пробовал так:
    PHP:
    1. $nowarr[$_SESSION["username"]] = $_POST["num"];
    но выдаёт ошибку:
    Cannot use object of type stdClass as array...
    Так вот, как, собственно его туда запихнуть при том, что я не знаю какие ключи и значения будут записыватся?
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Быть может это потому, что ваш $nowarr - это не массив, а объект?
     
  3. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    PHP:
    1. // вот так попробуй.
    2. $username = $_SESSION['username'];
    3. $nowarr[$username]=$_POST['num'];
     
  4. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Я понимаю что объект. Но как его сделать массивом? Я получаю этот массив с помощью json_decode.
    PHP:
    1. <?php
    2. if(isset($_POST["do"])) {
    3.     if($_POST["do"] == "rate") {
    4.         if(isset($_POST["num"])) {
    5.             $db = mysqli_connect("localhost", "root", "", "fan-mc");
    6.             $nowres = mysqli_query($db, "SELECT `rating` FROM `fmc-news` WHERE `id` = '{$_POST["new-id"]}'");
    7.             $nowrow = mysqli_fetch_assoc($nowres);
    8.             $nowjson = $nowrow["rating"];
    9.             if(empty($nowjson) || $nowjson == '') {
    10.                 $nowarr[$_SESSION["username"]] = $_POST["num"];
    11.                 $newjson = json_encode($nowarr);
    12.             } else {
    13.                 $nowarr = json_decode($nowjson);
    14.                 print_r($nowarr);
    15.                 $username = $_SESSION["username"];
    16.                 if(!array_key_exists($_SESSION["username"], $nowarr)) {
    17.                         $nowarr[$username] = $_POST["num"];
    18.                         $newjson = json_encode($nowarr);
    19.                 } else {
    20.                     die("already_rated");
    21.                 }
    22.             }
    23.             mysqli_query($db, "UPDATE `fmc-news` SET `rating` = '".mysqli_real_escape_string($db, $newjson)."' WHERE `id` = '{$_POST["new-id"]}'") or die(mysqli_error($db));
    24.         }
    25.     }
    26. }
    27. ?>
    --- Добавлено ---
    Не помогло.
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Опять спешишь... Не вникаешь в суть дела и пишешь первое, что пришло. Это никак не исправляет проблему, более того, проблемы, которую это могло бы исправить, в принципе не существует в PHP.
    У json_decode можно вторым параметром указать TRUE, тогда он вернет не объект, а массив. Подробнее - тут https://php.net/manual/ru/function.json-decode
     
    SamyRed нравится это.
  6. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Да это и так понятно.:)

    Вот тут спасибо. Где-то про это читал, но как-то с головы вылетело.
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Возьми себе за правило всегда искать в документации функции, которые используешь и в которых на 100% не уверен.
     
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    @Fell-x27 ))) а вот этого я не прочитал... И вообще о ООП ничего не знаю.