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



我卡住了

我想用以下结构创建一个multidim数组

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

其中index为从0到…的第一个维度n

第二次元有两个字段"word"one_answers"number"

和这两个字段中的每一个都保存一个数组(第一个是字符串,第二个是数字)

我不知道如何声明这个$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'超出范围。

无法索引到系统类型的对象。字符/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 }

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

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

需要一个大数组,例如长度为100的数组。注意括号中的区别!

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

现在测试一下:

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

相关内容

  • 没有找到相关文章

最新更新