Как добавить в массив новый уровень?

141
05 августа 2019, 19:40

Имею такой PHP код:

$goodname = 'name';
$goodlvl = '6';
    $name = "goods.json";
    $arr = array(
        'name' => $goodname,
        'lvl' => $goodlvl
    );
    file_put_contents($name, json_encode($arr, JSON_UNESCAPED_UNICODE));

Он создает массив PHP, преобразует в формат JSON и пихает в goods.json

Вроде всё работает, но не так как мне надо. Вот что этот скрипт делает с файлом goods.json:

{"name":"123","lvl":"6"}

Он переносит элементы массива. Хочу узнать, как заставить PHP скрипт давать этому массиву название, чтобы получилось что-то вроде этого

{
   "account" : {
      "name: "123", "lvl" : "6" 
   }
}

Всё для того чтобы потом можно было создавать эти аккаунты и указывать (вбивать в input'ы) статистику: имя и уровень, а PHP скрипт их создавал и заносил в goods.json

Answer 1

Дайте массиву имя, и оно поместится в json $goodname = 'name'; $goodlvl = '6';

$name = "goods.json";
$arr = array(
    "player" => array (
        'name' => $goodname,
        'lvl' => $goodlvl
        )
);
echo json_encode($arr, JSON_UNESCAPED_UNICODE);

Выведет: {"player":{"name":"name","lvl":"6"}}

Answer 2

Чтоб получить из вашего кода такой json текс:

{ "account" : { "name: "123", "lvl" : "6" } }

Ваш код должен иметь следующий вид:

$goodname = '123';
$goodlvl = '6';
$name = "goods.json";
$arr = array(
    'name' => $goodname,
    'lvl' => $goodlvl
);
//тут ваш массив кладем в массив другой массив
$account_array = array(
    'account' => $arr 
);
//заметьте тут поменялся массив источник вместо $arr мы кодируем в json $account_array
file_put_contents($name, json_encode($account_array, JSON_UNESCAPED_UNICODE));
READ ALSO
PHP ошибка T_ENCAPSED_AND_WHITESPACE

PHP ошибка T_ENCAPSED_AND_WHITESPACE

"-----Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\Abyss Web Server\htdocs\indexphp on line 44-----"

104
RedBeanPHP| Catchable fatal error: Argument 1 passed to RedBeanPHP\Util\DispenseHelper::dispense() must be an instance of RedBeanPHP\OODB, null given [закрыт]

RedBeanPHP| Catchable fatal error: Argument 1 passed to RedBeanPHP\Util\DispenseHelper::dispense() must be an instance of RedBeanPHP\OODB, null given [закрыт]

Catchable fatal error: Argument 1 passed to RedBeanPHP\Util\DispenseHelper::dispense() must be an instance of RedBeanPHP\OODB, null given

109
Как извлечь логин и пароль с URL

Как извлечь логин и пароль с URL

Делаю свой REST API для Android приложения

120