早上全部,
我敢肯定,这可能是由于缺乏完全了解 PowerShell 中二维数组访问的工作原理,但我遇到了一些奇怪的行为:
这是我的代码:
$testarray = @( ("a",1),("b",2))
echo $testarray[0]
echo "____________"
foreach ($test in $testarray)
{
echo $test[0]
}
现在,当我运行它时,我希望两个回声都能产生 A1,并且我已经设置了一个 2D 数组,其中元素 0 由 2 个值 A 和 1 组成。但是当我循环浏览时,我没有得到相同的结果。
foreach 是否以不同的方式处理这些数组?从理论上讲,我应该能够通过$test[0][1]
来访问值 1。
这是预期行为吗?我倾向于认为我不完全理解foreach对数组做了什么。
我使用 2D 数组的原因是我想在第一个元素中存储一个 FileObject,然后在第二个元素中存储一个友好名称,例如:
$SLFile = (Get-ChildItem -Path $folder -Filter "file1_*.csv" | sort LastWriteTime -Descending)[0]
$SOHFile = (Get-ChildItem -Path $folder -Filter "file2_*.csv" | sort LastWriteTime -Descending)[0]
#Add to an array
$fileArray = @( ($SLFile,"FriendlyFile1Name"), ($SOHFile, "FriendlyFile2Name") )
当我这样做时,我一直有这种行为,所以决定做一些测试(但并没有真正取得任何进展,因此为什么我现在在这里:))
任何指导将不胜感激。
非常感谢, 本
我运行它并得到:
a
1
____________
a
b
是的,这是预期的行为。在第一种情况下,您说:"在第一个索引处显示我的多维数组中的内容"。在这里,它找到数组("a",1)并返回该数组。在第二种情况下,您说:"遍历我的多维数组并显示其中第一个索引中的内容"。这给了你一个,b。
你不能说$test[0][1]
$test因为它是一个包含一维数组的循环变量。但是,您可以说$testarray[0][1]
访问 1。
请注意,您在此处创建了一个交错数组,不一定是矩阵。