提问人:Ethan Allen 提问时间:6/28/2021 更新时间:6/28/2021 访问量:222
为什么 PHP json_encode将代码放在我的 Int 数据类型周围并将它们设置为字符串?[复制]
Why is PHP json_encode putting codes around my Int data types and making them Strings instead? [duplicate]
问:
以下是直接从 MySQL 提取数据的示例代码:
$mysqli = new mysqli('localhost','user','password','myDatabaseName');
$myArray = array();
if ($result = $mysqli->query("SELECT * FROM reviews")) {
while($row = $result->fetch_array(MYSQLI_ASSOC)) {
$myArray[] = $row;
}
echo json_encode($myArray);
}
$result->close();
$mysqli->close();
问题是值,例如“id”,在我的 JSON 中显示为值。例:Int
String
[{
"id": "1",
"company": "Joe's Burgers",
"rating": "Good",
"affiliate": "0"
}]
在MySQL中,id是一种类型,affiliate是一种类型。如何解决此问题以正确格式化 JSON?这是我所期待的:INT
TINYINT
[{
"id": 1,
"company": "Joe's Burgers",
"rating": "Good",
"affiliate": 0
}]
答:
-1赞
aynber
6/28/2021
#1
将JSON_NUMERIC_CHECK添加到您的json_encode中,它将强制将数字作为未加引号的数字。
echo json_encode($myArray, JSON_NUMERIC_CHECK);
评论
0赞
deceze
6/28/2021
这有助于将字符串转换为数字。最好首先弄清楚为什么它们是字符串,当它们被认为是整数时......
1赞
RickN
6/28/2021
@deceze PHP中的MySQLi函数处理所有数据类型的字符串,但如果你(&相关)一个数据库字段,你总是会得到一个字符串。它们不像 ORM 那样强制转换值。fetch_assoc()
INTEGER
2赞
deceze
6/28/2021
@RickN stackoverflow.com/a/25692758/476
0赞
Dharman
6/28/2021
@RickN 他们只是默认这样做。您可以启用对适当类型的自动类型强制转换,但是如果您使用预准备语句(每个人都应该这样做),则它们将在本机类型中返回
评论
$myArray
var_dump($myArray)
JSON_NUMERIC_CHECK