PHP ошибка в синтаксисе
есть вот такой код:
<?php
require "db.php";
header('Content-Type: application/json; charset=utf-8');
$login = $_SESSION['logged_user']->login;
$settings = R::findOne('users', 'WHERE `login`=?', [$login]);
if ($_POST['type'] == 'simple'){
$settings->$_POST['parameter'] = $_POST['value'];
R::store($settings);
}
$ArrayParametr = [
'sound',
$settings->sound
];
$ArrayParametr = [
'theme',
$settings->theme
];
$ArrayParametr = [
'block',
$settings->block
];
$ArrayParametr = [
'language',
$settings->language
];
$ArrayParametr = [
'vibro',
$settings->vibro
];
echo( json($ArrayParametr) );
?>
Как видите в 8 строке, я не буквально задаю параметр, а беру его из POST запроса. Подозреваю что ошибка там (500 ошибка), валидатор выдает что всё в порядке. Тем не менее скрипт не работает. Что может быть не так? А вернее как правильно написать 8 строку?
Ответы (1 шт):
Автор решения: artemgh
→ Ссылка
Спасибо всём, особенно Алексею Шиманскому. Вот итоговый рабочий код:
<?php
require "db.php";
header('Content-Type: application/json; charset=utf-8');
$login = $_SESSION['logged_user']->login;
$settings = R::findOne('users', 'WHERE `login`=?', [$login]);
if ($_POST['type'] == 'simple'){
$settings->{$_POST['parameter']} = $_POST['value'];
R::store($settings);
}
$ArrayParameter[] = [
'sound',
$settings->sound
];
$ArrayParameter[] = [
'theme',
$settings->theme
];
$ArrayParameter[] = [
'block',
$settings->block
];
$ArrayParameter[] = [
'language',
$settings->language
];
$ArrayParameter[] = [
'vibro',
$settings->vibro
];
echo( json_encode($ArrayParameter));
?>
Ошибка была в 8 строке, после названия массива не поставил квадратные скобки, поскольку массив двумерный и плюс вместо json, надо использовать json_encode.