2011-12-07 24 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 };