2010-12-03 138 views
2

我想動態地建立一個JavaScript數組,其中_tags是一個全局定義的數組,然後通過ajax請求將其發送到php。基本上我需要uid作爲鍵,x,y作爲子數組。在PHP它會看起來像我如何動態創建一個多維JavaScript數組

$arr[$uid] = array('x'=>$x,'y'=>$y); 

,但有麻煩的JavaScript找出一個數組這樣的IM,繼承人我有什麼

function add_tag_queue(uid,x,y){ 

    var arr = new Array(3); 
    arr[0] = uid; 
    arr[1] = x; 
    arr[2] = y; 

    _tags.push(arr); 
} 

回答

4

這隻要工程確定它們僅僅是 一個條目被添加到數組中, 我添加了多個值,在其他的 單詞中該函數將運行幾個 時間然後我想發送整個數組的 ,但這似乎只是 將使用逗號 分隔符添加所有內容。

林不知道你在這裏說什麼。我之前給出的第二個示例假設每個uid都有一個x,y對,但對_tags中有多少個uid沒有限制。這就是爲什麼var _tags = {};是功能的一部分 - 所以它是一個全局變量。

以下修改將允許你有多個X,Y對每個uid

function add_tag_queue(uid,x,y){ 

    /* 
    * detect if _tags[uid] already exists with one or more values 
    * we assume if its not undefined then the value is an array... 
    * this is similar to doing isset($_tags[$uid]) in php 
    */ 
    if(typeof _tags[uid] == 'undefined'){ 
    /* 
     * use an array literal by enclosing the value in [], 
     * this makes _tags[uid] and array with eah element of 
     * that array being a hash with an x and y value 
     */ 
    _tags[uid] = [{'x':x,'y':y}]; 
    } else { 
    // if _tags[uid] is already defined push the new x,y onto it 
    _tags[uid].push({'x':x, 'y':y}); 
    } 
} 

這應該工作:

function add_tag_queue(uid,x,y){ 

    _tags.push([uid, x,y]); 
} 

如果你想uid爲重點那麼你需要使用一個對象/散列不是array

var _tags = {}; // tags is an object 
function add_tag_queue(uid,x,y){ 

     _tags[uid] = {'x':x,'y':y}; 
    } 
+0

這工作正常,只要他們只有一個條目被添加到數組中,我添加了多個值,換句話說該函數將運行幾次,然後我想發送整個數組,但這似乎只是用逗號分隔符添加所有內容。 – Brian 2010-12-03 05:51:11

0

你可以隨時在php和json_encode中建立它。

0

您正在尋找在Javascript中實現關聯數組。儘管Javascript不支持關聯數組,但Javascript對象可以被視爲幾乎相同。

試試這個:

_tags = {} 

function add_tag_queue(uid,x,y){ 
    _tags[uid] = {x:x, y:y}; 
} 

_tags現在是一個對象,你會在UID鍵添加一個新的對象。同樣,x,y對存儲在一個對象中。第一個x是關鍵字,第二個是值。爲了澄清,你可以寫這樣的:

function add_tag_queue(uid,xValue,yValue){ 
    _tags[uid] = {x:xValue, y:yValue}; 
} 
0

它看起來非常相似,你給PHP的例子:

function add_tag_queue(uid,x,y){ 
    _tags[uid] = {x: x, y: y}; 
} 
0

這是我如何創建JS多維數組。我希望這有幫助。

var arr= []; 
arr[uid] = new Array(); 
arr[uid]["x"] = xvalue; 
arr[uid]["y"] = yvalue;