首页 开发编程 正文

php怎么类型转换 PHP后端很难返回规范的JSON数据吗

PHP后端很难返回规范的JSON数据吗?PHP弱类型可能会导致JSON返回时不够标准PHP它是弱类型的脚本语言,那返回的数据其实都被当成了String类型,即使字段类型是int、double这类的也会被当成String处理。然后进行数据填充生成JSON字符串再返回。链接数据库MYSQLi_connect('mysql用户名&#...

php怎么类型转换,PHP后端很难返回规范的JSON数据吗?

PHP作为当下主流的脚本语言,因其简单高效的特点备受关注,基于PHP开发的项目也是很多的,可以说PHP是作为Web开发的首选开发语言。但是PHP本身是弱类型语言,所以在某些地方的支持度上也是存在一些问题的,比如对于JSON的处理就存在一定的差异化。

PHP弱类型可能会导致JSON返回时不够标准

PHP它是弱类型的脚本语言,所以在输出方面所有类型默认会被当成String输出。可能有PHP开发者不太理解这句话,举例来说:如果通过PHP从数据库中查询数据,那返回的数据其实都被当成了String类型,即使字段类型是int、double这类的也会被当成String处理。

在这种情况下,不同的开发者写出来的JSON可能就存在差异,比如:

{"name":"张三","age":22}

{"name":"张三","age":"22"}

另外在PHP环境下输出对象类型的字段时,也会出现问题,有些时候下会将{}返回成[],比如:

{"name":"张三","info":{}}

{"name":"张三","info":[]}

上面例举的这2个例子危害性很大,特别是作为API输出时会让调用方崩溃。

PHP后端如何规范返回JSON?

弱类型语言看似方便容错性高,其实更容易出现Bug,这也是一些安全系数要求高的项目并不会采用PHP这类弱类型语言去开发的原因。

那PHP在对JSON处理这块应该怎么做呢?我的建议就是定义好数据返回模板,然后进行数据填充生成JSON字符串再返回。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

每种数据类型适用于哪种场合?

借用“短发人”的数据,手工完善一下。

boolean (布尔型) 一般用于判断,true或false。比如是否检测,是否完成,是否毕业等。

integer (整型)一般用于年龄,数量等没有小数点的计算。比如1 2 33 -9等。

float (浮点型, 也称作 double) 一般用于金钱,面积、体积等科学,含小数点的计算。比如3.1415926585897932

string (字符串)一般用于人名,物品等常规字符串。比如“张三”“桌子”“我来了”

array (数组)一般用于复杂数据处理,可以多维数据结构,可以放布尔、整型、浮点、字符、数组等。

object (对象) 一般用于面向对象,里面包含方法和变量。

php8语法特点?

php8语法动态语言类型的特性,现在很多情况下,联合类型都是很有用的。联合类型是两个或者多个类型的集合,表示可以使用其中任何一个类型。联合类型中不包含 void,因为 void 表示的含义是 “根本没有返回值”。 另外,可以使用 |null 或者现有的 ? 表示法来表示包含 nullable 的联合体 :

public function foo(Foo|null $foo): void;public function bar(?Bar $bar): void;

php操作数据库的三步骤?

第一步:链接数据库

MYSQLi_connect('主机地址','mysql用户名','mysql密码 ','数据库','端口号')

返回:如果连接成功,返回资源类型的标志符号;如果连接失败,返回false。

如果我们与mysql建立的连接不只一条,那么以后操作数据库的各种函数都必须传入返回的连接符号;

如果我们与mysql建立的连接只有一条,那么以后操作数据库的各种函数就不必传入这个标识符号。建议都传入。

密码为空可以省略密码

$conn= mysqli_connect("localhost", "root", "123456", "dbname");

第二步:检测数据库连接是否成功

mysqli_connect_errno()与 mysqli_connect_error()

mysqli_connect_errno(); 返回上次连接数据库错误的错误号,连接成功返回0

mysqli_connect_error(); 返回上次连接数据库的错误信息

if(mysqli_connect_errno($conn)){

die("数据库连接失败!失败信息:".mysqli_connect_error($conn));

}

前面两步合并的写法:连接数据库同时判断

$conn = mysqli_connect("localhost", "root", "", "mydb") or die("数据库连接失败!失败信息:".mysqli_connect_error($conn));

第三步:选择数据库

mysqli_select_db($link,$dbname)

参数:①标识符 ②连接数据库名称

连接成功,返回true;连接失败,返回false

如果修改数据库成功,则资源标识符中的数据库就会发生变动;

如果修改失败而没有通过代码终止操作,则后续代码可以使用原数据库继续执行

mysqli_select_db($conn, "mydb") or die("数据库选择失败!");

第四步:设置字符集编码格式

mysqli_set_charset($link,$charset) 只能设置为utf8而不能是utf-8

mysqli_set_charset($conn,"utf8") or die("数据库编码集设置失败!");

第五步:编写sql语句

$sql = "select * from 表名";

第六步:执行sql语句

mysqli_query($link,$sql)

如果是(DML)增、删、改,将返回布尔类型是否成功

返回上一次操作时受影响的行数 mysqli_affected_rows($link)

如果是(DQL)查询,将返回资源结果集

返回资源结果集中的行数 mysql_num_rows($result)

返回资源结果集中的字段数 mysql_num_fields($result)

如果查询失败,返回false

$res = mysqli_query($conn,$sql);

mysqli_insert_id($conn); 执行插入语句是返回上次插入最新插入的主键ID

第七步:解析结果集

var_dump(mysqli_fetch_array($res)); 处理结果集,返回关联数组和索引数组 不常用

参数① 需要处理的结果集

参数② 返回哪种数组格式

MYSQL_ASSOC 关联数组

MYSQL_NUM 数字数组

MYSQL_BOTH 默认。同时产生关联和数字数组

echo "<table border='1' style='border-collapse:collapse;text-align:center;width:200px;'>";

echo "<thead bgcolor='lightblue' style='color:#ffffff;'><td>ID</td><td>姓名</td><td>年龄</td><td>性别</td></thead>";

while($row =mysqli_fetch_assoc($res)){ // 返回关联数组 指针遍历 常用

echo "<tr>";

foreach($row as $value){

echo "<td>{$value}</td>";

};

echo "</tr>";

}

echo "</table>";

mysqli_data_seek($res,0); 设置结果集指针位置,此式表达复位至0

var_dump(mysqli_fetch_object($res));

var_dump(mysqli_fetch_row($res)); 返回索引数组

var_dump(mysqli_fetch_object($res)); 返回对象

var_dump(mysqli_fetch_fields($res)); 返回结果集中每一列的字段信息

第八步:关闭资源与结果集

mysqli_free_result()和mysqli_close()

mysqli_free_result($res); //释放查询资源结果集

mysqli_close($conn); //关闭数据库连接

php中变量可以分为什么和什么两种类型的变量?

存在8种变量类型,可以分为三类* 标量类型: boolean、integer、float(double)、string* 复合类型: array、object* 特殊类型: resource、NULL

本文转载自互联网,如有侵权,联系删除