从JavaScript Array Object中的值中删除引号

时间:2012-05-02 20:42:07

标签: php javascript json

我正在尝试正确地格式化我的JSON编码数组。这是我的PHP MySQL查询:

$query = "SELECT date, value1, value2
            FROM testdata
            ORDER BY date ASC";  


         $result = mysql_query($query);
         $myChartData = array();
          while($row = mysql_fetch_assoc($result)){
            $myChartData[] = $row;
                        }

   <script type="text/javascript">
    var chartData = <?php echo json_encode($myChartData); ?>;

从控制台,对象看起来像这样:

[Object { date="2011-02-23", value1="133034", value2="12105.78"},
 Object { date="2011-02-24", value1="122290", value2="12068.50"},
 Object { date="2011-03-08", value1="453142", value2="12214.38"}]

日期周围的引号保留,但是value1和value2上的引号需要被删除。

所有这一切的自学教练...感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

<强>首先

  

日期周围的引号保留,但是value1和value2上的引号需要被删除。

没有引号!您看到的是chartData中包含的数据的直观表示。在这种情况下,它是一个包含三个对象的数组,每个对象包含三个包含字符串的属性 你想要的是将其中一些字符串转换为数字(整数,浮点数)。


正确的方法

您似乎没有在数据库中正确存储数据。如果值是数字,则它们将被编码。

唯一合理的解决方案是在此结束时修复它。这意味着您必须正确定义数据库字段的数据类型。


解决方法

如果由于某种原因,你无法修复数据库(你应该努力尝试),你可以将字符串转换为数字

如果您不熟悉JavaScript,可能需要先阅读Working with Objects [MDN]

答案 1 :(得分:1)

一个简单的JavaScript解决方案:

function formatChartData(data) {
    for(var i = 0, length = data.length; i < length; i++) {
        data[i].value1 = parseInt(data[i].value1, 10);
        data[i].value2 = parseFloat(data[i].value2);
    }
    return data;
}

var chartData = formatChartData(<?php echo json_encode($myChartData); ?>);