php - PHP JSON API - 检测返回值的数据类型
问题描述
我正在研究一个PHP JSON API
返回json_encoded
多维数组的方法。由于事实上,这PHP
是一种弱类型语言 - 我在客户端返回的数据类型存在一些问题,例如整数作为字符串返回。
响应示例
json 编码前
array() {
["users"]=>
array() {
["id"]=>
string(3) "983"
["email"]=>
string(28) "xxx.xxx@xxx.xxx"
["username"]=>
string(8) "xxx"
["verified"]=>
string(1) "2"
["tutorial_completed"]=>
string(1) "1"
}
["companies"]=>
array() {
["id"]=>
string(3) "170"
["name"]=>
string(0) "xxx"
["trusted"]=>
string(1) "1"
}
}
json编码后
data: {
users: {
id: "983",
email: "xxx@xxx.xxx",
username: "xxx",
verified: "2",
tutorial_completed: "1",
},
companies: {
id: "170",
name: "xxx",
trusted: "1",
}
}
我正在从MySQL table
. 这些值基本上是按原样取的。
一种可行的解决方案intval()
是检查每个键,然后通过or转换数值floatval()
- 但这意味着要为更大的数组付出巨大的努力,并且该解决方案缺乏灵活性。
它们是否是一种自动检测数据类型是否也可以是数值的平滑方法,如果可以,则进行转换?
解决方案
问题:当您从 PHP 中从 MySQL 数据库中获取数据时,无论数据库中的字段是什么类型,结果中的字段都是字符串类型或 NULL。这与MYSQL驱动程序有关。
解决方案:您需要自己将数值转换为数组中所需的类型。或者,当您转换为 json 时,您可以简单地使用:
$encoded = json_encode($data, JSON_NUMERIC_CHECK);
数字字段将自动为您转换。
推荐阅读
- xcode - 可执行文件末尾有几个 KB 的空字节?
- rust - 添加简单的行“Pubkey::new_unique()”会破坏我的 Solana 程序
- gojs - 在 Go JS 中 - 当我有上面的代码时,选择一个节点不起作用
- python - 从文件路径中提取人名
- c++ - assert ( ) 表达式何时在作用域中求值?
- kubernetes - Kubernetes edit svc vs edit service(是在编辑同一个文件吗?)
- jquery - 如何在所有幻灯片上保持视频播放器相同?
- r - R中具有分类协变量的混合效应三次样条回归模型
- batch-file - 为什么 ECHO 命令的右括号没有重定向到文本文件?
- postgresql - 将 GCP PostgreSQL 表同步到 GCP BigQuery