2011-12-07 40 views
2

我一直在試圖弄清楚,但不能。 PHP的多維數組會是這樣的:PHP在C多維#

$array = array(
    1 => array("height" => 10, "width" => 20, "length" => 30), 
    2 => array("height" => 10, "width" => 20, "length" => 30), 
    3 => array("height" => 10, "width" => 20, "length" => 30), 
); 

而且他們,我會用

echo $array[3]["height"]; // output 10 
echo $array[3]["width"]; // output 20 

我曾嘗試使用Dictionary獲得的價值,但我對如何做到這一點不知道。 任何幫助表示讚賞 感謝

編輯: 這是我用的是爲我工作的代碼,希望這可以幫助別人。

Dictionary<int, Dictionary<string, int>> array = new Dictionary<int, Dictionary<string, int>>(); 
    Dictionary<string, int> sub = new Dictionary<string, int>(); 
    sub.Add("height", 10); 
    sub.Add("width", 20); 
    sub.Add("length", 30); 
    array.Add(1, sub); 

    sub = new Dictionary<string, int>(); 
    sub.Add("height", 10); 
    sub.Add("width", 20); 
    sub.Add("length", 30); 
    array.Add(2, sub); 

    sub = new Dictionary<string, int>(); 
    sub.Add("height", 10); 
    sub.Add("width", 20); 
    sub.Add("length", 30); 
    array.Add(3, sub); 

    Response.Write("height: " + array[1]["height"]); 
    Response.Write("<br />width: " + array[1]["width"]); 
    Response.Write("<br />length: " + array[1]["length"]); 

回答

1

什麼你正在做的是一個單一的維度字典的最終數組:

Dictionary<string,Decimal>[] array = 
{ 
    new Dictionary<string,Decimal>(){ 
     {"height", 10}, 
     {"width", 20}, 
     {"length", 30}, 
    }, 
    new Dictionary<string,Decimal>(){ 
     {"height", 10}, 
     {"width", 20}, 
     {"length", 30}, 
    }, 
    new Dictionary<string,Decimal>(){ 
     {"height", 10}, 
     {"width", 20}, 
     {"length", 30}, 
    }, 
}; 

Console.WriteLine(array[0]["height"]); 

Output: 10 

在C#中,你可以用大括號明確聲明有一個Add方法IEnumrables(其中,既有的System.Array和字典是兒童),所以我們這裏做的是聲明數組{ }和三個字典{},並在每個字典中添加三個鍵/值對{}。

+0

謝謝digdig,你的代碼比我的乾淨得多:D –

+0

任何時候都可以。通過找出一種可以讓你自己工作的方法來做正確的事情,因爲它可以幫助你更好地理解。 – digdig

1

也許是這樣的:

int[, ,] arrayName = new int[10, 20, 30]; 
int ten = arrayName.GetLength(0); 
int twenty = arrayName.GetLength(1); 
int thirty = arrayName.GetLength(2); 

單獨的值,然後像這樣訪問:

arrayName[2,13,25] = 42; 
+0

謝謝!你的建議也起作用。檢查我編寫的問題 –

0

你可以簡單地創建自己的類陣列容器

class MyArray 
{ 
public int height 
{ 
    get; 
    set; 
} 

public int width 
{ 
    get; 
    set; 
} 

public int length 
{ 
    get; 
    set; 
} 
} 

var array = new MyArray[1]; 
array[0] = new MyArray() { height= 12, width = 32, length = 3 }; 

var list = new List<MyArray>(); 
list.Add(new MyArray()); 

var foo = new MyArray(); 
foo.height= 55; 

var Y1= new MyArray() { height = 23 }; 

var X1 = new MyArray() { height = 7 }; 
var X2 = new MyArray() { height = 8 }; 
var list = new List<MyArray>() { X1, X2 };