【发布时间】:2015-03-13 11:14:42
【问题描述】:
我想知道是否有人可以阐明我在通过函数从多维数组返回值时所面临的问题:
$ArrayList = @()
function MultiDimensionalArrayTest
{
param(
[array]$ArrayList
)
for($i = 0; $i -lt 1; $i++)
{
$ArrayModify += ,@("Test", "Test")
}
return $ArrayModify
}
$ArrayModify = MultiDimensionalArrayTest
foreach ($item in $ArrayModify)
{
Write-Host $item[0]
}
当循环执行一次,返回的值为:
T
T
但是,如果 for 语句被循环两次,则返回的值为:
Test
Test
我的目标是从 Write-Host $item[0] 中检索 x 个值“Test”,无论语句执行多少次
如果在 $ArrayModify 数组中捕获并返回两行或多行,则该值为 system.object[],但是如果循环一次,则捕获值“Test, Test”,并且当 Write-Host $item[0] 被执行,它会打印 T。
任何建议将不胜感激。
【问题讨论】:
-
您要么返回一个数组或字符串,要么返回一个数组数组。这里有什么困惑?
-
您能否进一步解释您的脚本的全球目标是什么?
-
@EtanReisner OP 想知道他的第一个结果
$ArrayModify没有得到一个包含 1 个元素的数组。该元素是另一个数组。就目前而言,他得到了一个包含两个元素的数组,如您所知,它解释了输出。 -
@Matt Right 但我相信这只是 powershell 在返回时展开阵列。这是我最初的观点(尽管再看一遍我并没有说清楚)。
-
@EtanReisner 我也知道这一点。想不出防止这种情况的好方法。
标签: arrays powershell for-loop multidimensional-array