【发布时间】:2011-08-25 05:35:00
【问题描述】:
我正在尝试使用 JSON 在主机和我的网页之间传输一个数组。在主机上,我有一个 php 脚本,它从 mysql 表中读取许多行并从中创建一个数组。
$query="select ID,val,size from db;";
$result=mysql_query($query);
while ($row=mysql_fetch_assoc($result)) {
$idx= (int) $row['ID'];
$data[$idx]['val']=$row['val'];
$data[$idx]['size']=$row['size'];
}
echo json_encode($data);
通常,ID 在例如 0 和 99 之间线性递增。在这种情况下,json_encoded 输出是一个数组(在 javascript 中将被解释为一个数组...如果我执行 array.length ,我得到 100 作为答案)....
有时,表中缺少几行(可能没有 idx=40 的行)...在这种情况下,数组被 json_encoded 编码为对象的集合。在 javascript 中,如果我尝试查看 array.length,我会得到一个未定义的结果。我想强制将数据数组解释为索引数组,其中缺失行的值为 null/0。是否有捷径可寻?看起来 json_encode 函数可以选择强制编码为关联数组,但反之则不行。
谢谢。
【问题讨论】:
-
只是好奇,但你需要长度做什么?你不能像
$data['length']=count($data)这样在数组中设置一个长度属性吗?如果您需要循环数据的长度,数字中的空白会弄乱它/报告不正确的长度值。您可以使用for in循环(类似于 php foreach)。
标签: php javascript json