我有一些数据:
id=@(1,2,3)
name=@('Mark','Revekka','Johan')
Height=@(190,'',178)
如何获得像表一样的数组?
1 Mark 190
2 Revekka
3 Johan 178
我想获得这样的信息:
$array[1].name
并添加如下:
$array+=['Helena',168]
有可能吗?
答案 0 :(得分:5)
你可以这样做:
$data = @(
[PSCustomObject]@{
Name = "Mark"
Height = 190
},
[PSCustomObject]@{
Name = "Revekka"
Height = ""
},
[PSCustomObject]@{
Name = "Johan"
Height = 178
}
)
$data[0].Name # returns Mark
#to add an item you can do
$data += [PSCustomObject]@{
Name = "Helena"
Height = 168
}
$data | ft -AutoSize
<# returns
Name Height
---- ----
Mark 190
Revekka
Johan 178
Helena 168
#>
答案 1 :(得分:2)
就像PHP版本一样,它是一本字典词典:
$id=@(1,2,3)
$name=@('Mark','Revekka','Johan')
$Height=@(190,'',178)
$data = @{}
$id | foreach {
$data[$_] = @{
"Name"=$name[$_-1]
"Height"=$height[$_-1]
}
}
$data[1].Name
然后要添加一个新ID,您需要知道下一个可用的ID,要么在别处跟踪它,要么从字典中计算它:
$nextID = ($data.Keys | sort | select -Last 1) + 1
$data[$nextID] = @{Name='Helena'; 'Height'=168}
答案 2 :(得分:2)
这是另一个迭代每个项目并创建PSCustomObject
:
$id=@(1,2,3)
$name=@('Mark','Revekka','Johan')
$Height=@(190,'',178)
0 .. ($id.Count -1) | ForEach {
[PsCustomObject]@{Id = $id[$_]; Name = $name[$_]; Height = $Height[$_];}
}
<强>输出:强>
Id Name Height
-- ---- ------
1 Mark 190
2 Revekka
3 Johan 178