json_encode将数字更改为字符串

时间:2014-07-07 08:16:14

标签: arrays json cakephp-2.3

我有一个数组,它有一些字符串值和一些数值。我用了

json_encode

将数组转换为json数组,但它将数字值转换为我不想要的字符串。

 [["India","2"],["Panama","1"]]

我试过

JSON_NUMERIC_CHECK

作为json_encode中的第二个参数然后它在localhost上正常工作但在线显示错误。

Use of undefined constant JSON_NUMERIC_CHECK - assumed '

我正在使用cakephp 2.3

1 个答案:

答案 0 :(得分:4)

我在网上猜你有一个旧版本的PHP:

  

JSON_NUMERIC_CHECK(整数)

     

将数字字符串编码为数字。 自PHP 5.3.3起可用。

当你进行JSON编码时,如果PHP 知道它不是字符串,它将没有引号。 如果你需要手动完成,你可以这样做:

<?php

  function json_numeric($array)
  {
     if (is_array($array) || is_object($array)) {
        foreach($array as &$prop) {
            if (is_numeric($prop)) {
                $prop = intval($prop);
            }
            if (is_object($prop) || is_array($prop)) {
                $prop = json_numeric($prop);
            }
        }
     }
     return $array;
  }

  $x = array("a" => 1, "b" => "2", "c"=>array("d"=>1, "e"=>"2"));
  echo json_encode(json_numeric($x));
  //{"a":1,"b":2,"c":{"d":1,"e":2}}
  $y = new stdClass();
  $y->a = 1;
  $y->b = "2";
  echo json_encode(json_numeric($y));
  //{"a":1,"b":2}
?>