Как остановить перезапись первого индекса в массиве - PullRequest
0 голосов
/ 04 апреля 2019

У меня проблема с отправкой более одного комментария в массив

Когда я отправляю комментарий, он перезаписывает предыдущий


include "includes/globals_constants.php"; 

$comments = [];

if (isset($_POST["commentSubmit"])) {

    setComment($comments);

}

function setComment($data) {

    $comment = htmlspecialchars($_POST["comment"]);
    $blogitem = [
        "comment" => $comment
    ];

    array_push($data, $blogitem);

    if (file_put_contents(DBCOMMENTS, json_encode($data, JSON_PRETTY_PRINT))) {
        return true;
    }
}

Ответы [ 2 ]

1 голос
/ 04 апреля 2019

Ваш аргумент должен быть ссылкой на исходный массив, если вы хотите изменить последний внутри функции.Если вы не передадите его по ссылке, исходный массив не будет видоизменен, а копия, в которую вы поместили свой комментарий, будет потеряна, поскольку вы не вернете его.

Код:

function setComment (&$data) {...}
0 голосов
/ 04 апреля 2019

Догадка: заменить

array_push($data, $blogitem);

с

global $comments;
array_push($comments, $blogitem);

Вопрос: необходима ли эта инкапсуляция?

$blogitem = [ "comment" => $comment ]; 
...