gpt4 book ai didi

arrays - 创建一个锯齿状\多维数组,其中包含单个数组

转载 作者:行者123 更新时间:2023-12-03 01:10:43 25 4
gpt4 key购买 nike

我当前遇到一个脚本问题,该脚本基于传递给它的一组动态服务器\优先级来构建数组。例如,基于以下输入

server1,200
server2,200

我想建立一个看起来像
$arr=@() #at this point I have an empty array
$arr+=@("server1",200) #at this point, I would expect to have an array
#that itself holds another array

但是在这一点上,当我运行this时,我得到了意外的输出
echo $arr.count # result is 2, rather than the 1 I would expect
# It appears to be treating $arr as a single array
# with two members (server1 and 200) rather than an array
# that holds an array, which itself has two members

但是,如果我向数组添加另一个空数组:
$arr = @()
$arr += @()
$arr += $("server1",200)
$arr.count # output is 2, which is the desired result

我得到了想要的结果。我的问题是..我可以得到一个锯齿状\多维数组,其中只有一个数组的期望结果吗?在大多数情况下,这不会是一种常见的情况,因为我要处理的是多套项目,但是我想考虑所有情况,并且这可能会突然出现。我只想不必为此添加一个额外的步骤即可过滤出一个空数组。

任何投入将不胜感激。

最佳答案

您的2个示例将产生完全相同的结果,即包含2个元素的平面数组,因为追加空数组($arr+=@())不会以任何方式修改数组。

示范:

PS C:\> $ arr = @()
PS C:\> $ arr + = @('server1',200)
PS C:\> $ arr.Count
2
PS C:\>格式自定义-InputObject $ arr
服务器1
200

PS C:\> $ arr = @()
PS C:\> $ arr + = @()
PS C:\> $ arr + = @('server1',200)
PS C:\> $ arr.Count
2
PS C:\>格式自定义-InputObject $ arr
服务器1
200

当对两个数组使用append操作符(+=)时,PowerShell基本上将这些数组连接在一起。要将数组作为嵌套元素追加到第一个数组,您需要在第二个数组前加上一元数组构造运算符(,)。

PS C:\> $ arr = @()
PS C:\> $ arr + =,@('server1',200)
PS C:\> $ arr + =,@('server2',200)
PS C:\> $ arr.Count
2
PS C:\>格式自定义-InputObject $ arr

[
服务器1
200
]

[
服务器2
200
]

如果事先知道元素的数量,还可以预先创建所需大小的数组,然后将嵌套的数组分配为其元素。不需要逗号运算符。

PS C:\> $ arr =新对象Object [] 2
PS C:\> $ arr.Count
2
PS C:\> $ arr [0] = @('server1',200)
PS C:\> $ arr [1] = @('server2',200)
PS C:\>格式自定义-InputObject $ arr

[
服务器1
200
]

[
服务器2
200
]

关于arrays - 创建一个锯齿状\多维数组,其中包含单个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39799562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com