我有这个代码用于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"}
如何创建这个?!
答案 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'];