使用json_encode()函数在PHP中将JSON键值对放入数组。

3

我希望以特定的语法输出我的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编码的文档。

非常感谢您的帮助。


请发布实际的JSON。你的括号不平衡。 - Barmar
1
为什么您想在“dates:”数组中使用具有不同键的对象呢?这样做不会使访问值变得困难吗,因为您不知道键是什么? - Barmar
@Barmar - 感谢您的快速回复。抱歉,我已编辑所需的输出。它是手动输入的,我搞错了。此外,我的一个朋友与Json一起工作,他给了我一个非常具体的规范,说明他希望Json读取的方式。我对Json几乎一无所知,也不知道他为什么需要这样做,所以我实际上很惊讶我甚至能走到这一步! - Lee Ginger-Ninja McCarthy
原始输出还存在不匹配的括号。在added:上方的闭合]没有对应的开放[ - Barmar
3个回答

3

$dates的赋值更改为:

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

非常感谢您的快速回复和帮助 :) - Lee Ginger-Ninja McCarthy

0

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

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

然后它将正确地进行编码

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

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


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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接