使用json_encode()函数在PHP中的数组内的JSON键值对

时间:2014-11-15 00:30:16

标签: php arrays json

我试图以特定语法

获取我的JSON输出

这是我的代码:

$ss = array('1.jpg', '2.jpg');
$dates = array('eu' => '59.99', 'us' => '39.99');
$array1 = array('name' => 'game1', 'publisher' => 'ubisoft', 'screenshots' => $ss, 'dates' => $dates, 'added' => '2014/12/31');

echo json_encode($array1);

它给了我这个输出:

{
name: "game1",
publisher: "ubisoft",
screenshots: [
"1.jpg",
"2.jpg"
],
dates: {
eu: "59.99",
us: "39.99"
},
],
added: "2014/12/31"
}

这是关闭,但不完全是我需要的。日期需要格式略有不同。像这样:

{
name: "game1",
publisher: "ubisoft",
screenshots: [
"1.jpg",
"2.jpg"
],
dates: [
{
eu: "59.99"
},
{
us: "39.99"
}
],
added: "2014/12/31"
}

我尝试在$ dates数组中添加更多维度,但这仍然没有给出正确的输出。不幸的是,json_encode()函数的php手册并没有提供太多帮助,而且我在谷歌搜索中发现的php中更复杂的json编码的文档很少。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

$dates作业更改为:

$dates = array(array('eu' => '59.99'), array('us' => '39.99'));

答案 1 :(得分:0)

你需要做这样的事情(将每个日期包装在自己的assoc数组中)

array( 
   array('eu' => '59.99'),
   array('us' => '39.99')
);

然后它将正确编码为

[
   {'eu' : '59.99'},
   {'us' : '39.99'}
]

很简单,带有数字(自然)键的数组只是[ ],关联数组是{ key : value }

答案 2 :(得分:0)

$ss = array('1.jpg', '2.jpg');
$dates[] = array('eu' => '59.99');
$dates[]=array('us' => '39.99');
$array1 = array('name' => 'game1', 'publisher' => 'ubisoft', 'screenshots' => $ss, 'dates' => $dates, 'added' => '2014/12/31');
echo json_encode($array1);