php 如何把整型(int)转换为长整型(long)
在对接快手的 商品新增 接口时,按照文档组装好了数据,但是报“请求参数不合法,请检查字段类型是否匹配”的错误:
对着文档仔细检查了几遍,并没有发现异常。今天再检查了一遍,看到了有些字段的类型为 long
,再加上文档给的示例是 Java
,这才意识到问题所在。
之前接触过一点 Java
,Java
的基础数据类型有四类八种。四类:整型、浮点型、字符型、布尔值;八种:byte、short、int、long、double、float、char、boolen。
即在 Java
中整型有四种:
- byte:1个字节 8位 -128~127
- short :2个字节 16位
- int :4个字节 32位
- long:8个字节 64位
但是在 php 中就只有 int
一种。
在对接时,一开始没有在意,以为数据类型为 long
的字段只要传整数(int)即可,所以就一直报“参数不合法”的错。
在网上找了一下,还是有点一头雾水,所以想问一下该如何把 php
的整型转换为长整型?
换java
php 64 位的默认就是 8bit 的数据
你打印下数据是不是弄成 字符串类型了(如果是json 格式请求)
php应该是不区分这些的,在发起post请求的时候也不区分int和long,你还是检查一下其他的吧
先跟你说结论,对 PHP 而言,Int 和 Long 是一样的,当然32位和64位的服务器,可能有不同,但是不影响你这个问题。
然后,你们如果使用的是 JSON ,你可以让 java 转一个 json 你看看,你再转你的,哪里不对改哪里
你有没有把传过去的参数写到日志,看下具体的参数值
long 和 int,值的范围不一样
这种问题,再仔细核对下是不是字段名是不是写错了,写漏了。param 传入http client 前打印出来看下类型,是不是int弄成了string
postman调一下呗
在PHP中,可以使用整型(int)和长整型(long)两种整数类型来存储整数值。通常情况下,PHP会根据整数值的大小来自动选择适当的整数类型。但是,有时可能需要把一个整型(int)转换为长整型(long),这时可以使用下面的方法来完成。
使用intval函数:
使用(int)或(long)类型强制转换:
使用长整型字面量:
使用bcmath函数库中的bcmul函数:
请注意,在PHP中,长整型(long)类型与整型(int)类型实际上是同一种类型,只是数值范围更大而已。
请求前打印下请求参数,看看是不是他文档要的格式