PHP Json将整数编码为字符串

时间:2018-04-02 02:21:05

标签: php arrays json type-conversion

用户将值输入到Raspberry Pi上的表单中,理论上,这应该将值转换为json格式,将其写入文件,终止所有bp会话并重新开始(重定向到BBC作为确认现在)。

参数list()tailgrowthrate被编码为字符串,而不是整数。最终文件(fps)中的结果是它们显示为webtest1.json,我需要"tail": "1"

"tail": 1

3 个答案:

答案 0 :(得分:3)

方式1:如果您有PHP版 5.3.3 更高,您可以尝试使用第二个参数JSON_NUMERIC_CHECKjson_encode()函数而不转换每个数值。 如果您拥有最新的php版本,则需要更少的更改。

说你的数组是这样的,

$arr = array(
    "driver" => 'driver',
    "animation" => array(
        "typename" => 'typename',
        "tail" => '1',
        "growthRate" => 10
    ),
    "run" => array(
        "fps" => '23'
    ),
    "layout" => 'layout'   
);

echo json_encode( $arr, JSON_NUMERIC_CHECK );

<强>输出:

 {  
   "driver":"driver",
   "animation":{  
      "typename":"typename",
      "tail":1,
      "growthRate":10
   },
   "run":{  
      "fps":23
   },
   "layout":"layout"
}

方式2:将您的每个$_POST变量值转换为整数类型,如(int)$_POST['fps']。也可以根据需要对fpstailgrowthRate值进行操作。 这很好,但可能需要更改代码中的许多位置。

答案 1 :(得分:2)

不确定如何阻止它,因为我无法看到您的网络表单。但是,您可以使用intVal将任何字符串转换为整数。 如在

 "tail" => intVal($_POST["tail"]),

我认为指定type =&#39; number&#39;在输入字段上可能有助于提交值。值得一试

答案 2 :(得分:1)

@Ian Middelkamp说的话。

但是我想补充一点,你也可以使用(int)施法。所以窃取那个例子

"tail" => (int)$_POST["tail"],