2011-12-07 7 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を使用しようとしました使用して値を取得するだろうが、私はこれを実現する方法については考えています。 は、すべてのヘルプが おかげ

EDIT高く評価され: をこれが私のために働いた私が使用したコードで、これは誰かに役立ちます願っています。

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

何独自のクラス・アレイ・コンテナを作成することができますあなたはやっているのは一次元です最終辞書の配列:C#ので

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 

あなたは中括弧で明示的に(のSystem.Arrayと辞書の両方が子供であるの)AddメソッドでIEnumrablesを宣言することができますので、私たちがここでやっていることは、{配列を宣言されました}と内部に3つの辞書{}があり、各辞書の内部に3つのキー/値の組{}があります。

+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 };