Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从JavaScript数组对象中的值中删除引号_Php_Javascript_Json - Fatal编程技术网

Php 从JavaScript数组对象中的值中删除引号

Php 从JavaScript数组对象中的值中删除引号,php,javascript,json,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_asso

我正在尝试正确格式化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); ?>;
日期周围的引号保持不变,但value1和value2上的引号需要去掉


所有这些都是自学的noob…谢谢你的帮助

一个简单的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); ?>);
函数格式图表数据(数据){
对于(变量i=0,长度=data.length;i
首先:

日期周围的引号保持不变,但value1和value2上的引号需要去掉

没有引号!您所看到的是
chartData
中包含的数据的可视化表示。在本例中,它是一个包含三个对象的数组,每个对象都有三个包含字符串的属性
您需要的是将这些字符串中的一些转换为数字(整数、浮点)


正确的方法 您似乎没有在数据库中正确存储数据。如果这些值是数字,它们将被编码为数字

唯一合理的解决办法是在这一点上加以解决。这意味着您必须正确定义DB字段的数据类型


解决办法 如果由于某种原因,您无法修复DB(您应该非常努力),您可以将字符串转换为数字

  • 在PHP中,使用和/或
  • 或者在JavaScript中使用:


如果你是JavaScript新手,你可能想先读。

你应该在JSON编码之前将这些字符串“代码> Value1<代码>和<代码> Value2<代码>转换成数字。它是一个本机JavaScript对象,因此速度很快,不需要同样的解析量就可以访问数据@这不是真的。“值可以是双引号中的字符串,也可以是数字,也可以是真或假或空,也可以是对象或数组”@Diodeus:他就是这么做的
json\u encode($myChartData)
创建json。JSON不是JavaScript。这种格式的灵感来自JavaScript的对象文字语法。仅此而已。您是否确实尝试访问这些值<代码>控制台.log(yourArray[0].value1)感谢Felix的反馈。我使用RDB比使用javascript要好得多,我甚至回去仔细检查,以确保在创建DB时没有做任何傻事。在MySQL数据库中,日期存储为“日期”,value1存储为int(11),value2存储为十进制(8,2)。这就引出了我在研究我的问题时发现的一个难题。数据集正在发送到Amcharts,而其他人对引号中的列名有问题。我有点恼火为什么会出现相反的问题…我想知道我在控制台中看到的是否是传递到Amcharts的实际数据。仍在尝试我想了解一下这个…嗯。这很有趣。也许我的PHP/DB有些生疏,但是如果数据库中的数据类型正确,你应该在PHP中得到正确的数据类型。你的循环中的输出
var\u dump($row)
的例子是什么?Rats。输出看起来像:数组(3){[“date”]=>string(10)“2011-02-23”[“value1”=>string(6) “133034”[“value2”]=>string(8)“12105.78”}数组(3){[“date”]=>string(10)“2011-02-24”[“value1”]=>string(6)“122290”[“value2”]=>string(8)“12068.50”}数组(3){[“date”]=>string(10)“2011-03-08”[“value1”=>string(6)“453142”[“value2”=>string(8)”14.38}因此它看起来像是在获取value1和2(?)Joe,到目前为止,这是我要求的!我必须将它插入整个脚本,看看它是否生成图表,但输出结果如下:[Object{date=“2011-02-23”,value1=133034,value2=12105.78},Object{date=“2011-02-24”,value1=122290,value2=12068.5},Object{date 2011-03-08”,value1=453142,value2=12214.38}]这让我怀疑这是否是对我一开始做错的事情的修复,或者是什么…我会努力的,谢谢!好吧,它确实有效!谢谢乔!虽然,我认为这是在修复我一开始犯的错误。。。
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); ?>);
var number = +string;