【问题标题】:Remove double quotes from the Json_encode result从 Json_encode 结果中删除双引号
【发布时间】:2016-02-24 12:33:13
【问题描述】:

我正在尝试从数据库中获取一些数据,并尝试创建一个新的 json 文件。但是,在我的输出中,数组中有双引号。

我在 Stack Overflow 上尝试了许多可用的解决方案,但到目前为止都没有成功。帮我删除它。

   $to=array("name" => "Today","data" => $count1);
   $yes=array("name" => "Yesterday","data" => $count2);
   $ab=array($to,$yes);
   $y=array("format" => "percent");
   $z=array("labels" => $ti);

  $json=json_encode(array("series" => $ab,"y_axis" => $y,"x_axis" => $z));

     $fp = fopen('data.json', 'w');
      fwrite($fp, $json);
     fclose($fp);

当前输出:

{
    "series": [
        {
             "name":"Today","data":["123","123","123"]
        }
    ],
    "y_axis": {
        "format":"percent"
    },
    "x_axis": {
        "labels": ["00:00","00:00","00:00"]
    }
}

我在 123 和 00:00 左右不需要双引号。

【问题讨论】:

  • 如果你想要整数,你应该在将它们添加到$countX 数组之前将它们转换为整数。而00:00 不是有效数字,因此将其存储在 json 中的唯一方法是作为字符串。
  • 我的回答对您解决问题有帮助吗?请告诉我。

标签: php arrays json string


【解决方案1】:

试试这个:

如果没有值,请使用 floatval($var); 参考:http://php.net/manual/en/function.floatval.php

当前输出:

{"series":[{"name":"Today","data":["123","123","123"]}], "y_axis":{"format":"percent"},"x_axis":{"labels":["00:00","00:00","00:00"]}}

使用floatval($var); 处理"123","123","123"["00:00","00:00","00:00"] 将用双引号作为其字符串。

【讨论】:

  • 嗨 Fakruddin 添加“floatval($var);”工作得很好。非常感谢!
  • @DhruveePatel 很高兴为您提供帮助。如果您需要任何进一步的帮助,请告诉我。
【解决方案2】:

您可以使用array_map 将您的$count1 变量转换为整数,如下所示:

$to = array("name" => "Today","data" => array_map('intval',$count1));

[概念证明]

<?php

$count1 = array("1","2","00:00","10");


$to = array("name" => "Today","data" => array_map('intval',$count1));
var_dump($to);
?>

结果:

array(2) {
  ["name"]=>
  string(5) "Today"
  ["data"]=>
  array(4) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(0)
    [3]=>
    int(10)
  }
}

【讨论】:

    【解决方案3】:

    尝试将所有整数值转换为整数(您可以使用floatval() 函数转换为浮点数):

    $to=array("name" => "Today","data" => (int)$count1);
    

    编辑: 我错过了 $count1 是一个数组。您可以将数组的所有元素转换为整数。

    function castArrayOfStingsToArrayOfIntegers(&$array){
        foreach ($array as $key => $var) {
            $array[$key] = (int)$var;
        }
    }
    
    castArrayOfStingsToArrayOfIntegers($count1)
    

    您可以使用任何其他方式来遍历元素。考虑到如果数组中有很多值,它将产生极简的性能影响。您应该考虑是否真的需要将这些值作为整数,以及这是否是转换它们的正确位置。在构造 $count1 和其他类似数组时,最好将它们强制转换。

    第二次编辑: 如果您有很多项目,请记住使用(int) 的演员比intval() 函数快很多(大约2 倍)。

    【讨论】:

      猜你喜欢
      • 2019-02-15
      • 2014-02-17
      • 1970-01-01
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      相关资源
      最近更新 更多