1

私は立ち往生しています。

次の構造を持つ multidim 配列を作成したいと思います

$x[index]['word']="house" 

$x[index]['number']=2,5,7,1,9

ここで、index は 0 から ... n までの最初の次元です

2 番目の次元には「単語」と「数値」の 2 つのフィールドがあります

これら 2 つのフィールドはそれぞれ配列を保持します (最初のフィールドは文字列、2 番目のフィールドは数値)

この $x を宣言する方法がわかりません

私は試してみました

$x = @(()),@(@()) - doesn't work

また

$x= ("word", "number"), @(@()) - doesn't work either

また

$x = @(@(@(@()))) - nope

次に、この配列を次のように使用します。

$x[0]["word"]= "bla bla bla"
$x[0]["number]= "12301230123"
$x[1]["word"]= "lorem ipsum"
$x[2]["number]=...
$x[3]...
$x[4]...

最も頻繁に発生するエラーは次のとおりです。

インデックス '0' が範囲外だったため、配列の割り当てに失敗しました。

System.Char/INt32 型のオブジェクトにインデックス付けできません

arrays[][]or Joes @を使用してこれを達成したいと思いますが、.net [,] は使用しません。

私は何かが欠けていると思います。

4

2 に答える 2

1

私の理解が正しければ、あなたはハッシュテーブルの配列を探しています。オブジェクト配列内に必要なものを格納できるため、単語または数字をキーとして検索できるハッシュテーブルを格納します。元:

$ht1 = @{}
$ht1["myword"] = 2
$ht1["23"] = "myvalue"
$ht2 = @{}
$ht2["1"] = 12301230123

$arr = @($ht1,$ht2)


PS > $arr[1]["1"]
12301230123

PS > $arr[0]["myword"]
2

PS > $arr[0]["23"]
myvalue

必要な数がわかっている場合は、ショートカットを使用して作成できます。

#Create array of 100 elements and initialize with hashtables
$a = [object[]](1..100)
0..($a.Length-1) | % { $a[$_] = @{ 'word' = $null; 'number' = $null } }


#Now you have an array of 100 hastables with the keys initialized. It's ready to recieve some values.
PS > $a[99]

Name                           Value
----                           -----
number
word

後で別のペアを追加する必要がある場合は、次のように簡単に使用できます。

$a += @{ 'word' = $yourwordvar; 'number' = $yournumbervar }
于 2013-05-10T11:24:17.607 に答える
0

配列を作成し、ハッシュテーブルで初期化できます。

$x=@(@{})*100;    
0..99 | foreach {$x[$_]=@{}};
$x[19]["word"]="house";
$x[19]["number"]=25719;

たとえば、長さが 100 の大きな配列が必要です。括弧の違いに注意してください。

前のコマンドでハッシュテーブルのポインターが 100 回コピーされたので、2 番目のステップが必要です...そして、あなたはそれを望まないでしょう :)

今それをテストします:

$x[19]["number"];
25719
$[19]["word"];
house
于 2013-05-10T16:13:43.527 に答える