如何使用PHP json_encode()更好地格式化JSON字符串生成器


How to better format the JSON string generator with PHP json_encode()?

我用php的json_encode()函数保存数组内的数据,然后将它们编码为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) { 
        ...
        ...
        ...       
    } 
}   

你可以试试下面的代码:

$obj['fecha'] = $fechaMensaje;
$obj['autor'] = $userEmail;
$obj['mensaje'] = $mensaje;
//insert obj to data array
$data[] = $obj;
// encoding to json 
$json = json_encode($data);

您可以定义另一个数组,在下面的例子中为$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);