#php #arrays #json
#php #массивы #json
Вопрос:
Я сохраняю данные внутри массивов с json_encode()
помощью функции php, а затем кодирую их в строки json, чтобы сохранить их в одном поле базы данных.
Это то, что я делал:
$fechaMensaje = $_POST['fechaMensaje'];
$mensaje = $_POST['mensaje'];
$estadoMensaje = 'abierto';
$data['fecha'][] = $fechaMensaje;
$data['autor'][] = $userEmail;
$data['mensaje'][] = $mensaje;
$datosMensaje = json_encode($data);
Это действительно работает, и это создает строку, подобную этой:
{
"fecha":["29-09-2016 11:12:51 AM"],
"autor":["demo@example.com"],
"mensaje":["lorem ipsum"]
}
Это массив, который я получил при декодировании строки:
{
["fecha"]=> array(1) {
[0]=> string(22) "29-09-2016 11:12:51 AM"
}
["autor"]=> array(1) {
[0]=> string(23) "demo@example.com"
}
["mensaje"]=> array(1) {
[0]=> string(11) "lorem ipsum"
}
}
Теперь мой вопрос в том, как я могу изменить способ генерации массива в первую очередь, чтобы вместо этого получить этот вывод? (имея три элемента в одном массиве, поэтому, когда я добавлю больше элементов, он будет более организованным).
{
["0"]=> array(3) {
['fecha']=> string(22) "29-09-2016 11:12:51 AM"
['autor']=> string(23) "demo@example.com"
['mensaje']=> string(11) "lorem ipsum"
}
[1]=> array(3) {
...
...
...
}
}
Комментарии:
1.
$data['fecha'][]
вы не хотите, чтобы это[]
было в конце — это присваивание данных в виде массива, а не строки, которая учитывает другую структуру.2. Как насчет
data[]['fecha'] = $fechaMensaje;
и так далее?
Ответ №1:
Вы можете попробовать этот код:
$obj['fecha'] = $fechaMensaje;
$obj['autor'] = $userEmail;
$obj['mensaje'] = $mensaje;
//insert obj to data array
$data[] = $obj;
// encoding to json
$json = json_encode($data);
Ответ №2:
В приведенном ниже случае вы можете определить другой массив $some_var
, содержащий каждый массив данных. Также удалите []
конец при присвоении значений для $data
.
$fechaMensaje = $_POST['fechaMensaje'];
$mensaje = $_POST['mensaje'];
$estadoMensaje = 'abierto';
$data['fecha'] = $fechaMensaje;
$data['autor'] = $userEmail;
$data['mensaje'] = $mensaje;
$some_var[0] = $data;
$datosMensaje = json_encode($some_var);