我想将数据编码为json。现在,通过底部代码,我具有ID和产品标题,但是我想添加其他数据(如费用)。我该怎么办?
<?php
$sql = 'SELECT id,title,cost,cat
FROM prodcts_df';
$q = $db->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
?>
<?php
while ($r = $q->fetch()): ?>
<?php $myJson->$r['id']= $r['title'];?>
<?php endwhile; ?>
<?php echo json_encode($myJson); ?>
答案 0 :(得分:1)
您最好将整个行($r
)添加到数组中,而不仅仅是标题。您还应该首先初始化数组($myJson
)...
$sql = 'SELECT id,title,cost,cat
FROM prodcts_df';
$q = $db->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
// Initialise array
$myJson = []
while ($r = $q->fetch()) {
// Add the row to the array indexed by the ID
$myJson[$r['id']]= $r;
}
echo json_encode($myJson);
请注意,我使用$myJson[$r['id']]
而不是$myJson->$r['id']
来添加它,这在索引像这样的数据列表时更为常见。
如果只需要数组的一部分...
$myJson[$r['id']]= [ 'title' => $r['title'], 'cost' => $r['cost']];
答案 1 :(得分:1)
您可以像这样在json_encode之前在数组中添加成本:
// ......
while ($r = $q->fetch()) {
$myJson->$r['id']= [
'title' => $r['title'],
'cost' => $r['cost'],
//.....
];
}
// .....
答案 2 :(得分:0)
json_encode($myJson);
会将您的对象编码为JSON。 如果将其他数据添加到$ myJson变量中,它将在输出中包括这些数据:
$myJson['foo'] = 'bar';