我想从php脚本中获取一个json对象。到目前为止,我已经做到了这一点。
<?php
$connection=pg_connect("host=localhost port=5432 dbname=postgres user=postgres password=root") or die("Can't connect to database".pg_last_error());
$result = pg_query('SELECT * FROM playground');
$rows = array();
while($r = pg_fetch_assoc($result)) {
$rows[] = $r;
}
print json_encode(array_values(pg_fetch_all($result)));
?>
这将返回以下对象
[{"name":"slide","color":"blue","location":"south"},{"name":"slide","color":"green","location":"north"},{"name":"dont","color":"red","location":"west"}]
然而,我试图将它们存储在更像....
[
{"name":"slide","values": [ "color" : ["blue","green"], "location": ["south", "north"] ]},
{"name":"dont","values" : ["color" : ["red"],"location" : ["west"] }
]
基本上,我想通过父字段值将公共组分组为键,将它们的值分组为json对象的值。
但我无法做到。如果有人可以帮忙,我将不胜感激。 感谢。
答案 0 :(得分:1)
你可以循环遍历$result
并自己创建所需的数组结构:
while($r = pg_fetch_assoc($result)) {
if (!array_key_exists($r['name'], $rows)) {
$rows[$r['name']] = array('values' => array( 'color' => array(), 'location' => array() ));
}
if (!in_array($r['color'], $rows[$r['name']]['values']['color'])) {
$rows[$r['name']]['values']['color'][] = $r['color'];
}
if (!in_array($r['location'], $rows[$r['name']]['values']['location'])) {
$rows[$r['name']]['values']['location'][] = $r['location'];
}
}
echo json_encode($rows);
这将在表单
上生成JSON{
"slide": {
"values": {
"color": [
"blue",
"green"
],
"location": [
"south",
"north"
]
}
},
"dont": {
"values": {
"color": [
"red"
],
"location": [
"west"
]
}
}
}