Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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 Json将整数编码为字符串_Php_Arrays_Json_Type Conversion - Fatal编程技术网

PHP Json将整数编码为字符串

PHP Json将整数编码为字符串,php,arrays,json,type-conversion,Php,Arrays,Json,Type Conversion,用户将值输入到Raspberry Pi上的表单中,理论上,这应该将值转换为json格式,将其写入文件,终止所有bp会话,然后重新启动(此时将重定向到BBC作为确认) 参数tail、growthrate和fps被编码为字符串,而不是整数。最后一个文件(webtest1.json)中的结果是它们显示为“tail”:“1”,我需要“tail”:1 // check if a form was submitted if( !empty( $_POST ) ){ // convert form d

用户将值输入到Raspberry Pi上的表单中,理论上,这应该将值转换为json格式,将其写入文件,终止所有bp会话,然后重新启动(此时将重定向到BBC作为确认)

参数
tail
growthrate
fps
被编码为字符串,而不是整数。最后一个文件(
webtest1.json
)中的结果是它们显示为
“tail”:“1”
,我需要
“tail”:1

// check if a form was submitted
if( !empty( $_POST ) ){
    // convert form data to json format
    $postArray = array(
      "driver" => $_POST['driver'],
      "animation" => array(
        "typename" => $_POST["typename"],
        "tail" => $_POST["tail"],
        "growthRate" => $_POST["growthRate"]
      ),
      "run" => array(
        "fps" => $_POST["fps"]
      ),
      "layout" => $_POST['layout']  
    );
    //you might need to process any other post fields you have..

    $json = json_encode( $postArray );
    // make sure there were no problems
    //if( json_last_error() != JSON_ERROR_NONE ){
        //exit;  // do your error handling here instead of exiting
    // }
    $file = '/home/pi/Documents/webtest1.json';
    // write to file
    //   note: _server_ path, NOT "web address (url)"!
    file_put_contents( $file, $json);
}   
shell_exec("sudo killall bp");
shell_exec("sudo bp /home/pi/Documents/webtest1.json > /dev/null 2>/dev/null &");
header("Location: http://www.bbc.co.uk");
die();

不知道如何停止,因为我看不到您的web表单。但是,可以使用intVal将任何字符串转换为整数。 如


我认为在输入字段中指定type='number'可能有助于处理提交的值。值得一试

不确定如何停止,因为我看不到您的web表单。但是,可以使用intVal将任何字符串转换为整数。 如


我认为在输入字段中指定type='number'可能有助于处理提交的值。值得一试

方法1:如果您有PHP版本5.3.3更高版本,您可以使用第二个参数
JSON\u NUMERIC\u CHECK
来执行此操作,而无需强制转换每个数值如果您使用的是最新的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:将每个
$\u POST
变量值转换为整数类型,如
(int)$\u POST['fps']
。在需要的地方也可以这样做,比如
fps
tail
growthRate
这是一个很好的方法,但可能需要更改代码中的许多位置。方法1:如果您有PHP版本5.3.3更高版本,您可以使用第二个参数
JSON\u NUMERIC\u CHECK
来运行,而不必强制转换每个数值如果您使用的是最新的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:将每个
$\u POST
变量值转换为整数类型,如
(int)$\u POST['fps']
。在需要的地方也可以这样做,比如
fps
tail
growthRate
这是一个很好的方法,但可能需要更改代码中的许多位置。

正如@Ian Middelkamp所说

但是我想补充一点,你也可以使用
(int)
强制转换,所以你可以偷取这个例子

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

伊恩·米德尔坎普说了些什么

但是我想补充一点,你也可以使用
(int)
强制转换,所以你可以偷取这个例子

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

php的版本?这与编号
pi
无关。php的版本?这与编号
pi
无关。