我们在用PHP写API接口的时候,对于数值型的处理问题进行一下汇总。因为PHP是弱类型语言,在与一些强类型语言对接的时候,经常出问题。
1、PHP对长整型数据有溢出问题
2、PHP从Mysql数据库里取数据的时候,取出的数据类型都是string类型。不管在定义表字段是int还是bigint等,取出来都是string类型 3、对于接口一般都是body提交,如果直接header输出的话,是接受不到数据的 那么用PHP写API接口的时候,如何处理呢? 第一个问题:升级PHP版本,升级到PHP7。对长整型的数字就不会溢出,当然你的服务器一般都是64位,和操作系统的位数也有一定的关系。 第二个问题:API接口最终返回给APP端都是JSON格式的加密,那么在PHP把数据从数据库中取出来时候,json_encode($array, JSON_NUMERIC_CHECK);注意“JSON_NUMERIC_CHECK”,把字符串类型的数字转换成数字型,这样就不会也问题了 第三个问题:直接贴代码:
$data = array('requestInfo' => $data);$params = array('http' => array( 'method' => 'POST', 'header'=>array( "Content-Type:application/x-www-form-urlencoded" ), 'content' => http_build_query($data)));$ctx = stream_context_create($params);$res = file_get_contents(API_URL.$url, false, $ctx);if(preg_match('/^\xEF\xBB\xBF/',$res)) { $res=substr($res,3);}
如果不用array(‘requestInfo’=>$data),再封装一次的话,直接在'content'=>$data,接口层是得不到数据的,不管你采用file_get_contents还是curl,都得不到数据~