2016-09-29 86 views
1

我使用php的json_encode()函数将数据保存在数组中,然后将它们编码为json字符串,以便将它们保存到单个数据库字段中。如何更好地使用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":["[email protected]"], 
"mensaje":["lorem ipsum"] 
} 

这是我数组解码字符串时得到:

{ 
    ["fecha"]=> array(1) { 
     [0]=> string(22) "29-09-2016 11:12:51 AM" 
    } 
    ["autor"]=> array(1) { 
     [0]=> string(23) "[email protected]" 
    } 
    ["mensaje"]=> array(1) { 
     [0]=> string(11) "lorem ipsum" 
    } 
} 

现在,我的问题是,我该如何改变我在第一个地方生成数组的方式,以获得此输出呢? (在同一个数组中有三个元素,所以当我添加更多元素时,它将更加有组织)。

{ 
    ["0"]=> array(3) { 
     ['fecha']=> string(22) "29-09-2016 11:12:51 AM" 
     ['autor']=> string(23) "[email protected]" 
     ['mensaje']=> string(11) "lorem ipsum" 
    } 
    [1]=> array(3) { 
     ... 
     ... 
     ...  
    } 
} 
+0

'$数据[ '出生日期'] []'你不想说'[]'在结束 - 这是分配数据作为数组不是一个占据不同结构的字符串。 – CD001

+0

'data [] ['fecha'] = $ fechaMensaje;''等等如何? – Hackerman

回答

3

你可以试试这个代码:

$obj['fecha'] = $fechaMensaje; 
$obj['autor'] = $userEmail; 
$obj['mensaje'] = $mensaje; 

//insert obj to data array 
$data[] = $obj; 

// encoding to json 
$json = json_encode($data); 
3

可以定义另一个数组,在下面的情况下$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);