2013-08-05 63 views
1

我想在JavaScript中創建數組,這將使我訪問這樣的數據:創建二維關聯數組的JavaScript(同一個PHP assoc命令陣列)

var name = infArray[0]['name']; 

但我似乎無法得到任何東西以這種方式工作。當我使用json_encode從php到javascript傳遞一個assoc數組時,它以這種方式構造數據。 之所以我這樣做是因爲我可以傳回數據以相同的格式到PHP來執行更新SQL請求。

+0

如果你只是'數組serialize',它傳遞給其他PHP文件,然後'unserialize'它,你將有更簡單一些。中間的Javascript轉換似乎不是必要的。 – DevlshOne

+0

@DevlshOne:JSON也是一種序列化格式,只是一種不同的格式。 –

+0

我不太明白你的意思,我有2個數組包含的信息,我需要回傳到php從信息數組中取出的PHP ID? –

回答

4

JavaScript沒有關聯數組。它有(數字)數組和對象。

你想要的是兩者的結合。事情是這樣的:

var infArray = [{ 
    name: 'Test', 
    hash: 'abc' 
}, { 
    name: 'something', 
    hash: 'xyz' 
}]; 

然後,像你展示,你可以訪問它:

var name = infArray[0]['name']; // 'test' 

或使用點符號:

var name = infArray[0].name; // 'test' 
+0

非常感謝你所有的答案,一直愚蠢地呆在這個太久(猜測需要睡眠)你如何做到這一點,所以它是空的,然後你可以填充它在for循環? –

+0

很高興能幫到你! :-D –

0

JavaScript沒有ASSOC陣列。對任何宣稱爲obj['somthing']的對象的任何內容都等於obj.something - 它是一個屬性。此外,在數組中它可能有點誤導,所以任何添加的屬性都不會改變數組集合嘗試obj.length

2

簡單地var infArray = [{name: 'John'}, {name: 'Greg'}] ;-)

0

的JavaScript沒有2D關聯數組本身。但是2D關聯數組可以通過下面的代碼來實現:

var myArr = { K1: { 
    K11: 'K11 val', 
    K12: 'K12 Val' 
    }, 
    K2: { 
    K21: 'K21 Val', 
    K22: 'K22 Val' 
    } 
}; 
alert(myArr['K1']['K11']); 
alert(myArr['K1']['K12']); 
alert(myArr['K2']['K21']); 
alert(myArr['K2']['K22']);