【发布时间】:2014-08-13 00:02:50
【问题描述】:
我已经生产了一系列存放在某个地方的水果。说它看起来像这样
$myFruits = array("apples"=>1, "oranges"=>3, "bananas"=>5);
然后将该数组传递给一个函数,该函数将为 API 返回 json 编码的数据。
首先,我希望能够返回我拥有的所有水果类型的列表
{"fruits":["apples", "oranges", "bananas"]}
我用这个来完成它
echo json_encode(array("scripts" => array_keys($scripts)));
现在,我希望每种水果都包含在自己的哈希中,因此
{"fruits":
[
{name: "apples"
},
{name: "oranges"
},
{name: "bananas"
]
}
这样,我可以在不破坏可能使用该 API 以前版本的现有代码的情况下向每个水果对象添加额外的字段(例如:如果我决定在其中也添加水果计数)。
看到我如何创建一个新数组并将我的水果列表分配给一个名为“fruits”的键,我尝试对每个内部哈希执行相同的操作:
$myFruits = array("apples"=>1, "oranges"=>3, "bananas"=>5);
$data = array();
foreach ($myFruits as $key => $value) {
// initialize an associative array for each fruit
$val = array();
array_push($val, array("name" => $key));
// add it to the list of fruits
array_push($data, $val);
}
// assign list of fruits to "fruits" key
$outData = array("fruits" => $data);
echo json_encode($outData);
但我得到了这个
{"fruits":[[{"name":"apples"}],[{"name":"oranges"}],[{"name":"bananas"}]]}
每个水果哈希周围都有额外的方括号,我认为这是因为我使用数组来存储每个键值对。
如何获得我想要的输出?
【问题讨论】: