json_encode中的PHP自定义值

时间:2015-07-17 19:43:49

标签: php json

我有这个代码用于PHP json输出的打印结果:

$value = array();
$return_arr = array();
$row_array = array();
$fileName = Access::FETCH("SELECT  name ,id FROM " . TAGS . " GROUP BY name ORDER BY name ASC");
foreach($fileName as $key => $value)
    {
    $row_array['id'] = $value['id'];
    $row_array['text'] = $value['name'];
    $rows2[] = $row_array;
    }

$ret = array();
echo json_encode($rows2);

结果是:

[{"id":406,"text":"404"},{"id":405,"text":"tag1"},{"id":404,"text":"tag3"},{"id":401,"text":"tag4"}]

但是在行动中我看到ID值不在""之间(例如:"id":406)我需要json_encode的格式:

{"id":"405","text":"tag1"}

如何创建这个?!

3 个答案:

答案 0 :(得分:2)

首先,如果您以稍微不同的方式编写查询,那么您似乎不必将值复制到临时数组中:

$fileName = Access::FETCH("SELECT id, name AS text FROM " . TAGS . " GROUP BY text ORDER BY text ASC");
json_encode($fileName);

换句话说,name AS text只是在源头更改密钥,可以这么说。

整数不是字符串。在你做任何事之前,你应该考虑它是否重要。如果是这样,那么纠正它就像将它们转换成字符串一样简单:

$row_array['id'] = (string) $value['id'];

或者,如果您使用我对SQL查询的建议,那么您可以循环遍历数据并将其投射到位:

foreach ($fileName as & $value) {
    $value['id'] = (string) $value['id'];
}
json_encode($fileName);

答案 1 :(得分:0)

如果你需要将数字数据表示为字符串,你需要做的就是在调用json_encode之前将它显式地转换为字符串:

$row_array['id'] = (string)$value['id'];

答案 2 :(得分:0)

将$ value [' id']转换为字符串应该有帮助:

$row_array['id'] = (string)$value['id'];