Запись в JSON дублируется

259
17 июня 2017, 14:27

Вот файл со скриптом php.Помогите, как сделать так что бы из $users сделать $users= array('id' => $id, 'name' => $name, 'pass' => $password); что бы переменная id была счетчиком, начиналась с нуля и при каждой записи увеличивалась.Буду очень благодарен за подсказки.

<?php
$name = $_POST['user'];
$password = $_POST['pass'];
if(!isset($name, $password) || empty($name) || empty($password)){
    http_response_code(400);
    die();
}
$file = "../data/users.json";
$users = json_decode(file_get_contents($file), true);
$users = array('name' => $name, 'pass' => $password);
if(isset($users[$name])) {
    if($users[$name] != $password){
        http_response_code(400);
    }
} 
else {
    file_put_contents($file, json_encode($users, JSON_PRETTY_PRINT), FILE_APPEND);
}
?>
Answer 1

если я правильно понял, то вам стоит добавить в массив нового пользователя при помощи этого (внимание на квадратные скобки):

$users[] = array('name' => $name, 'pass' => $password);

далее перебрать массив циклом foreach в новый массив примерно так:

$new_users = array();
$i = 0;
foreach($users as $key => $user) {
    $new_user = '';
    $new_user = $user;
    $new_user['id'] = $i;
    $new_users[ $user['name'] ] = $new_user;
    $i++;
}

Чтобы проверить наличие имени просто перед добавлением спросите ваш старый вариант

if(isset($users[$name])) {
    // что-то
}
READ ALSO
Получить и сравнить все объекты одного пользователя

Получить и сравнить все объекты одного пользователя

Доброе утро! Помогите пожалуйста решить проблему с которой борюсь уже 3 день

248
Добавить товар в корзину кодом woocommerce

Добавить товар в корзину кодом woocommerce

Можно ли при нажатии кастомной кнопки добавить одновременно два и более товаров в корзину (например по id товара), при этом сделать на этот...

281
Приведение decimal к нормальному виду

Приведение decimal к нормальному виду

Храню в БД кол-во биткоинов в decimal(15,15)

286
Как вставить переменную php в тело запроса json

Как вставить переменную php в тело запроса json

Вопрос - как вставить переменную php в тело запроса json?

302