Как правильно создавать и добавлять данные в объект JSON с помощью PHP? - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь понять, как правильно создать файл JSON и добавить к нему данные, вот мой PHP-код:

<?php 

$jsonFile = "_users.json";
$username = $_GET["username"];
$email = $_GET["email"];
$objID = $_GET["objID"];

//Load the file
$jsonStr = file_get_contents($jsonFile);

//Decode the JSON data into a PHP array.
$array = json_decode($jsonStr, true);

if ($array != null) {
    $arrNew['ObjID']++;
    $arrNew['username'] = $username;
    $arrNew['email'] = $email;

    array_push($array, $arrNew);

} else {
    $arrNew = [];
    $array['ObjID'] = 0;
    $array['username'] = $username;
    $array['email'] = $email;

    array_push($array, $arrNew);
} 

// Encode the array back into a JSON string and save it.
$jsonData = json_encode($array);
file_put_contents($jsonFile, $jsonData);

// echo data
echo $jsonData;
?> 

Если я обновлю URL в своем браузере, вызвав мой php-файл, яполучить этот вывод, если я пойду на example.com/_users.json

{
  "0": [], 
  "1": {
    "ObjID": 1,
    "username": "bob",
    "email": "b@doe.com"
  },
  "2": {
    "ObjID": 1,
    "username": "sarah",
    "email": "b@doe.com"
  },
  "3": {
    "ObjID": 1,
    "username": "sarah",
    "email": "b@doe.com"
  },
  "ObjID": 0,
  "username": "bob",
  "email": "b@doe.com"
}

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

  1. Так как при первом запуске скрипта файл _users.json не существует, его нужно сгенерировать
  2. Создать JSON mainобъект
  3. Вставить 1-й объект внутрь основного объекта
  4. Добавить 2-й объект (все еще внутри основного объекта )
  5. и т. Д. С 3-м, 4-м и т. Д.

Поэтому мне нужно получить вывод, подобный следующему:

{ <-- Main Object starts

  "1": { <-- 1st object inside the Main Object
    "ObjID": 1,
    "username": "bob",
    "email": "b@doe.com"
  },
  "2": { <-- 2nd object
    "ObjID": 1,
    "username": "sarah",
    "email": "s@doe.com"
  }

} <-- Main Object closes

Я не могувыяснить, что я делаю неправильно в своем коде PHP.

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Попробуйте код ниже.

$jsonFile = "_users.json";
$username = $_GET["username"];
$email = $_GET["email"];
$objID = $_GET["objID"];

//Load the file
$jsonStr = file_get_contents($jsonFile);

//Decode the JSON data into a PHP array.
if($jsonStr=='') $array = array();
else $array = json_decode($jsonStr, true);

if (empty($array)) {
$arrNew = [];
$arrNew['ObjID']=0;
$arrNew['username'] = $username;
$arrNew['email'] = $email;

array_push($array, $arrNew);

} else {

$array['ObjID'] ++;
$array['username'] = $username;
$array['email'] = $email;

array_push($array, $arrNew);
} 

// Encode the array back into a JSON string and save it.
$jsonData = json_encode($array);
file_put_contents($jsonFile, $jsonData);

// echo data
echo $jsonData;
?> 
0 голосов
/ 08 июня 2018

Логика в части else должна быть инвертирована:

} else {
  $array = [];
  $arrNew['ObjID'] = 0;
  $arrNew['username'] = $username;
  $arrNew['email'] = $email;

  array_push($array, $arrNew);
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...