首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP json_encode将数字编码为字符串

PHP json_encode将数字编码为字符串
EN

Stack Overflow用户
提问于 2009-09-08 05:14:55
回答 17查看 148.2K关注 0票数 156

我有一个关于PHP json_encode函数的问题。它将数字编码为字符串,例如

代码语言:javascript
复制
array('id' => 3)

变成了

代码语言:javascript
复制
"{ ["id": "3", ...)

当js遇到这些值时,它会将它们解释为字符串,并对它们执行失败的数值操作。有谁知道防止json_encode将数字编码为字符串的方法吗?谢谢!

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2009-09-07 21:50:40

我做了一个非常快速的测试:

代码语言:javascript
复制
$a = array(
    'id' => 152,
    'another' => 'test',
    'ananother' => 456,
);
$json = json_encode($a);
echo $json;

如果我没记错的话,这看起来就像你描述的那样?

我得到的输出是:

代码语言:javascript
复制
{"id":152,"another":"test","ananother":456}

因此,在本例中,整数尚未转换为字符串。

尽管如此,这可能取决于我们使用的PHP的版本:根据PHP的版本,已经纠正了几个与json_encode相关的错误。

这个测试是用PHP 5.2.6进行的;我在PHP 5.2.9和5.3.0上也做了同样的事情;但是我没有另一个5.2.x版本可以测试:-(

您使用的是哪个版本的PHP?或者您的测试用例比您发布的示例更复杂?

也许http://bugs.php.net/上的一个bug报告可能是相关的?例如,Bug #40503 : json_encode integer conversion is inconsistent with PHP

也许你也会对Bug #38680感兴趣,顺便说一句?

票数 32
EN

Stack Overflow用户

发布于 2011-07-07 17:22:53

请注意,从PHP5.3.3开始,用于自动转换数字的there's a flag ( options参数是在PHP5.3.0中添加的):

代码语言:javascript
复制
$arr = array( 'row_id' => '1', 'name' => 'George' );
echo json_encode( $arr, JSON_NUMERIC_CHECK ); // {"row_id":1,"name":"George"}
票数 379
EN

Stack Overflow用户

发布于 2012-07-03 19:24:23

同样,我也是从DB (PostgreSQL)中读取数据,所有内容都是字符串。我们循环每一行并对其进行操作,以构建最终结果数组,因此我使用

代码语言:javascript
复制
$result_arr[] = array($db_row['name'], (int)$db_row['count']);

在循环内将其强制为整数值。当我现在执行json_encode($result_arr)时,它会正确地将其格式化为数字。这使您可以控制哪些是来自数据库的数字,哪些不是。

编辑:

使用JSON_NUMERIC_CHECK标志作为json_encode()函数的第二个参数,它还可以动态地完成此操作。但是,您需要小心使用它,如文档中的这个用户示例所示(复制如下):http://uk3.php.net/manual/en/function.json-encode.php#106641

代码语言:javascript
复制
<?php
// International phone number
json_encode(array('phone_number' => '+33123456789'), JSON_NUMERIC_CHECK);
?>

然后你会得到这个JSON:

代码语言:javascript
复制
{"phone_number":33123456789}
票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1390983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档