PHP json_encode数字编码为字符串
2022-08-30 02:27:29
我在PHP json_encode函数中遇到了一个问题。它将数字编码为字符串,例如
array('id' => 3)
成为
"{ ["id": "3", ...)
当 js 遇到这些值时,它会将它们解释为字符串,并且对它们进行数值运算失败。有谁知道一些防止将数字编码为字符串的方法吗?谢谢!json_encode
我在PHP json_encode函数中遇到了一个问题。它将数字编码为字符串,例如
array('id' => 3)
成为
"{ ["id": "3", ...)
当 js 遇到这些值时,它会将它们解释为字符串,并且对它们进行数值运算失败。有谁知道一些防止将数字编码为字符串的方法吗?谢谢!json_encode
请注意,从 PHP 5.3.3 开始,有一个用于自动转换数字的标志(options 参数是在 PHP 5.3.0 中添加的):
$arr = array( 'row_id' => '1', 'name' => 'George' );
echo json_encode( $arr, JSON_NUMERIC_CHECK ); // {"row_id":1,"name":"George"}
我,同样从数据库(PostgreSQL)读取,一切都是一个字符串。我们循环遍历每一行,并用它做一些事情来构建我们的最终结果数组,所以我使用了
$result_arr[] = array($db_row['name'], (int)$db_row['count']);
在循环中强制其为整数值。当我现在这样做时,它正确地将其格式化为数字。这使您可以控制来自数据库的数字,什么不是数字。json_encode($result_arr)
编辑:
该函数还能够使用标志作为其第二个参数来动态执行此操作。您需要小心使用它,但如文档中的此用户示例所示(复制如下):http://uk3.php.net/manual/en/function.json-encode.php#106641json_encode()
JSON_NUMERIC_CHECK
<?php
// International phone number
json_encode(array('phone_number' => '+33123456789'), JSON_NUMERIC_CHECK);
?>
然后你得到这个JSON:
{"phone_number":33123456789}