Arrays 如何在powershell中定义不同类型的多维数组

Arrays 如何在powershell中定义不同类型的多维数组,arrays,powershell,multidimensional-array,Arrays,Powershell,Multidimensional Array,我卡住了 我想创建一个具有以下结构的多维数组 $x[index]['word']="house" $x[index]['number']=2,5,7,1,9 其中索引是从0到。。。n 第二维度有两个字段“单词”和“数字” 这两个字段中的每一个都包含一个数组(第一个包含字符串,第二个包含数字) 我不知道怎么申报这个$x 我试过了 $x = @(()),@(@()) - doesn't work 或 或 然后我想像这样使用这个数组: $x[0]["word&qu

我卡住了

我想创建一个具有以下结构的多维数组

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

$x[index]['number']=2,5,7,1,9
其中索引是从0到。。。n

第二维度有两个字段“单词”和“数字”

这两个字段中的每一个都包含一个数组(第一个包含字符串,第二个包含数字)

我不知道怎么申报这个$x

我试过了

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

然后我想像这样使用这个数组:

$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[][]
或jaws@来实现这一点,但不使用.net[,]之类的东西


我想我遗漏了一些东西。

如果我理解正确,您正在寻找一个哈希表数组。您可以在对象数组中存储您想要的任何内容,因此可以存储哈希表,您可以使用单词或数字作为键进行搜索。例:

$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 }

如果我理解正确,那么您正在寻找一个哈希表数组。您可以在对象数组中存储您想要的任何内容,因此可以存储哈希表,您可以使用单词或数字作为键进行搜索。例:

$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 }

您可以创建一个数组,并使用哈希表初始化它:

$x=@(@{})*100;    
0..99 | foreach {$x[$_]=@{}};
$x[19]["word"]="house";
$x[19]["number"]=25719;
您需要一个大数组,例如长度为100的数组。请注意括号中的差异

您需要第二步,因为在上一个命令中,哈希表的指针被复制了100次。。。你不希望这样:)

现在测试它:

$x[19]["number"];
25719
$[19]["word"];
house

您可以创建一个数组,并使用哈希表初始化它:

$x=@(@{})*100;    
0..99 | foreach {$x[$_]=@{}};
$x[19]["word"]="house";
$x[19]["number"]=25719;
您需要一个大数组,例如长度为100的数组。请注意括号中的差异

您需要第二步,因为在上一个命令中,哈希表的指针被复制了100次。。。你不希望这样:)

现在测试它:

$x[19]["number"];
25719
$[19]["word"];
house