如何将数据编码为json?

时间:2019-04-21 14:13:45

标签: php json

我想将数据编码为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); ?>

3 个答案:

答案 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';