如何json编码从数据库中检索的数据

时间:2015-12-28 21:29:07

标签: php json wordpress

我正在研究wordpress插件,我需要从数据库中检索数据,在此之前,我只使用本机php mysql_fetch_row()

//这是旧代码的摘录。

echo "(";
$rows=array();

while($row=mysql_fetch_row($query))
{
    //echo "My first Rows <br />";
    //print_r($row);
    $rows[]="[".implode(',',$row)."]";

    //echo "The full rows after first implode <br />";
    //$rows[] = $row;
}
echo "[".implode(',', $rows)."]";

    //echo "The full rows after second implode <br />";

    //print json_encode($rows);
echo ");";

输出

?([[1409893200000,134.00],[1416808800000,149.00],[1417413600000,155.00],[1417500000000,155.00],[1418277600000,153.85],[1418364000000,153.85]]);

现在我正在使用$ wpdb对象,但是我被困在编码点。 从数据库中检索的数据是字符串,当我执行json_encode时,它会对字符串进行编码,但我需要的是json_encode的输出是浮点数。

//这是新代码的摘录。

$rows = array();
                            foreach ( $results as $result )
                            {
                                //- json items -
                                 $rows[]= array(
                                                intval($result->time),
                                                $result->value
                                            ); 


                            }
                                                            echo "(";
                            echo json_encode($rows);
                                                            echo ");";`

输出

?([[1418338800000,"153.85"],[1435705200000,"165.40"],[1421362800000,"161.03"],[1426460400000,"150.00"],[1416783600000,"149.00"],[1433890800000,"179.50"],[1433804400000,"179.50"]]);

这是挑战,数组的第二个值是字符串,我试图将字符串转换为float,但它们不会返回2个小数位。

这就是我所做的。

$num1 = "9";

//Using number_format 

echo (float) number_format($num1,2,'.',''); // result is 9 instead of 9.00

//Using Floatval echo floatval("9"); // result is 9 instead of 9.00

如何将数据格式化为带有2位小数的浮点数,例如9.00?

3 个答案:

答案 0 :(得分:0)

尝试:

number_format((float) $num1, 2);

答案 1 :(得分:0)

将行作为哈希...而不是数组...然后JSON编码哈希是什么。在任何情况下:不要尝试使用小数位进行乱码:通过这样做,您可以更改正在传递的值。

答案 2 :(得分:0)

经过几天的搜索后,我找到了问题的答案。

这是一个有相同问题的帖子,这就是解决方案。

foreach ( $results as $result )
    {
        //- json items -
        $rows[]= array(
                   $result->time,
                   $result->value
                    ); 
    }
        echo "(";
                 $res = json_encode($rows);
                 echo str_replace('"', '', $res);
        echo ");"; 

//结果

?([[1418338800000,1.81],[1435705200000,1.70],[1421362800000,1.65],[1426460400000,2.00],[1433890800000,2.23],[1433804400000,2.23]]);

来源:https://stackoverflow.com/a/30726401/4956378