2010-05-22 99 views
1

下面的输出来自php json_encode。我们在这里看到的是0849是两次。因为JavaScript只使用sn来获取值,为什么我们需要“0”值。主要问题是速度执行。如果800 KB的数据可能可以减少到400 KBphp json编码

{"success":"true","total":968,"data":[{"0":"0849","sn":"0849" }] 

如果没有解决方案,我必须作出一个脚本在json_encode所以没有必要两次数据transter过滤。

+1

你可能想显示多一点的代码 - 即什么是产生正在传递的对象' json_encode'。 – Amber 2010-05-22 04:44:27

回答

4

0条目是因为您的数组包含0条目!我会猜测你是从数据库中检索它,使用类似mysql_fetch_array;在这种情况下,您可以简单地更改为使用mysql_fetch_assoc(它返回一个直向前关联数组),或者将MYSQL_ASSOC作为第二个参数传递给mysql_fetch_array。如果您使用其他数据库来源,则存在类似的功能。

如果它不是来自数据库(或者您需要其他数字键),您可以随时过滤数值。您可以串起一堆array_ *函数一起做,或者只是一个foreach循环:

foreach ($data as $k => $v) { if (is_int($k)) { unset($data[$k]); } }
+0

我得到了完全相同的奇怪的JSON输出...所以我想你的答案是正确的!谢谢你:) – 2010-05-22 04:51:07

+0

是的,谢谢我解决它。尽管第二个不同。它对我很重要。从328.4 kb到158.2 kb。需要优化更多.... – hafizan 2010-05-22 04:56:26