【问题标题】:Remove double quotes around each element in json_encoded array删除json编码数组中每个元素周围的双引号
【发布时间】:2013-09-26 03:40:22
【问题描述】:

我正在尝试将数组传递给 GoogleChart API,它将接受如下所示的数组:

$arr=array(['Time' , 'Value'],['08' , 100 ],['10' , 200], ['12' , 300]);
$arr=(json_encode($arr));
echo($arr);
//result
[["Time","Value"],["08",100],["10",200],["12",300]]

但是,当我尝试以以下方式从我的数据库创建数组时,我在推入数组的元素周围加上了双引号,API 将不接受该数组:

WHILE($rows=mysqli_fetch_assoc($result)) {
$time[]=$rows['Time'];
$entry[]=$rows['Entry'];
    };

 $count=count($time);

$newarr=array();
for($i=0; $i<$count; $i++) {
$x="[".$time[$i].",".$entry[$i]."]";
array_push($newarr, $x);
};

array_unshift($newarr, ["Time", "Value"]);

echo(json_encode($newarr));
//result
[["Time", "Value"], "[06:08:00,250]", "[08:08:00,230]"]

是否可以创建不带双引号的数组或删除它们?

【问题讨论】:

    标签: php arrays json quotes


    【解决方案1】:

    您不想将 字符串 推送到 $newarr,而是一个数组:

    $newarr[] = array($time[$i], $entry[$i]);
    

    【讨论】:

      【解决方案2】:

      当您从数据库中读取时,您获得的结果值总是会被​​视为字符串值。如果您希望json_encode() 将其视为整数,则需要在进行编码之前将其专门转换为整数。

      你还有一个额外的问题是你试图通过连接括号来手动构建数组。在我看来你需要做这样的事情:

      $newarr = array();
      $newarr[] = array('Time', 'Value');
      while($row = mysqli_fetch_assoc($result)) {
          $newarr[] = array($row['Time'], (int) $row['Entry']);
      }
      
      echo(json_encode($newarr));
      

      我还通过直接在$newarr 中读取 SQL 结果来节省一些步骤(和内存)。如果您在代码后面确实需要单独的 $time$entry 数组,则可以忽略这一点并按照以前的方式进行操作。

      【讨论】:

      • 从 php 5.3.3 开始,json_encode 还接受 JSON_NUMERIC_CHECK 选项,它将数字字符串视为整数。
      • 我尝试了您对 SQL 的更改并得到以下结果:[["Time","Value"],[null,0],[null,0]]。但是,通过指出我手动构建数组的问题,我重新编写了代码,现在 API 确实可以识别数组。我会再看看你的 SQL 想法,看看我能不能让它发挥作用。谢谢。
      • @user2232681 请注意,我将变量名称更改为 $row 而不是您之前的 $rows,因为这更有意义(毕竟您一次只能处理一行) .如果你没有匹配你的变量名,那将是一个问题。
      • 是的,我也注意到了这一点并修复了它,你的建议就像一个魅力!很大的帮助,我今天学到了很多。
      猜你喜欢
      • 1970-01-01
      • 2021-11-04
      • 2011-04-19
      • 2020-04-08
      • 2018-10-29
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      • 2020-07-23
      相关资源
      最近更新 更多