

新闻资讯
技术学院本文介绍如何通过类型转换确保 json_encode() 将数组值正确编码为 json 数字(而非字符串),避免意外的双引号包裹,尤其适用于需严格遵循 json schema 或对接前端/api 的场景。
在 PHP 中,json_encode() 会严格依据 PHP 变量的实际类型生成对应的 JSON 值:字符串(string)→ JSON 字符串(带双引号),整数(int)→ JSON 数字(无引号),浮点数(float)→ JSON 数字,布尔值(bool)→ true/false 等。若你观察到类似 {"plate":"LQT 883","model":"-1584460854"} 的输出,说明 $row['item'] 在 PHP 中是字符串类型(例如数据库字段为 VARCHAR 或未显式转换),即使内容全是数字,json_encode() 仍会将其序列化为 JSON 字符串。
✅ 正确做法是显式类型转换,确保该值以整数形式参与编码:
echo json_encode([
"plate" => $randomString .
$result_4 . $plate,
"model" => (int)$row['item'] // 强制转为整型
], JSON_UNESCAPED_UNICODE); // 推荐添加此标志以支持中文等 Unicode 字符(PHP 5.4+)⚠️ 注意事项:
"model" => is_numeric($row['item']) ? (int)$row['item'] : null
总结:JSON 的类型语义源于 PHP 源数据类型。要输出无引号的数字,关键不是修改 json_encode() 的输出,而是确保传入的值本身就是 int 或 float。一次精准的类型转换,胜过后续所有字符串修补。