我想在主機和我的網頁之間使用JSON傳輸數組。在主機上,我有一個php腳本,它從mysql表中讀取一些行並從中創建一個數組。強制json_encode編碼(稀疏)數組作爲索引數組在php
$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,則會得到未定義的結果。我想強制數據數組被解釋爲一個索引數組,其空/行值爲空。是否有捷徑可尋?它看起來像json_encode函數有一個選項強制編碼作爲關聯數組,但不是相反。
Thx。
只是好奇,但你需要什麼長度?難道你不能像'$ data ['length'] = count($ data)''那樣在數組中設置一個長度屬性嗎?如果您需要循環數據的長度,那麼數字中的空白將會弄亂/報告不正確的長度值。你可以使用'for in'循環(類似於PHP的foreach)。 – 2011-05-13 20:46:21