Массив, сохраняемый в файл, не заполняется должным образом после несериализации - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь написать код, чтобы получить идентификатор товара (int) и процент скидки (float) , а затем добавить их в массив, который должен быть сохранен в файл. Однако, когда я смотрю на массив, он, кажется, не возвращается должным образом после чтения из файла.

Я использую следующий код:

    <?php
$myfile = fopen("discountsList.txt", "a+") or die("Unable to open file!");
$discounts = [];
$discounts = unserialize(fread($myfile, "r"));

$discounts ["".$_POST['item']]=[$_POST['percentage']];

//Test Data
/*$discounts = [
    "1" => 50.0,
    "5" => 15.5
];*/



file_put_contents("discountsList.txt", "");
fwrite($myfile, serialize($discounts));
fclose($myfile);
if (isset($_POST['leave'])) header("Location: index.html");
else header("Location: admin_dashboard.php?status=completed");
exit();

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

Также я пытаюсь сделать так, чтобы, если индекс уже был установлен, он заменял значение вместо создания нового индекса.

1 Ответ

0 голосов
/ 26 апреля 2018

Я смог решить эту проблему, удалив все операторы fopen, fread, fwrite и fclose.

Рабочий код должен выглядеть примерно так:

$discounts = [];
$discounts = unserialize(file_get_contents("discountsList.txt"));
$discounts ["" . $_POST['item']] = [$_POST['percentage']];

Используя file_get_contents и file_put_contents, вы можете читать и записывать весь файл; это необходимо для того, чтобы позаботиться обо всем файле за раз.

file_put_contents("discountsList.txt", "");
file_put_contents("discountsList.txt", serialize($discounts));
if (isset($_POST['leave'])) header("Location: index.html");
else header("Location: admin_dashboard.php?status=completed");
exit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...