You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中合并两数组为数组的数组时结果异常,如何解决?

PowerShell合并数组为数组的数组出错的原因与解决方法

你的问题核心是PowerShell默认会展开输出的集合元素。当你在foreach循环里返回($list1Item, $list2Item)时,这个二元数组会被拆成两个独立元素进入结果集合,最终$result变成了扁平的一维数组:'A','1','A','2','B','1','B','2',而非你期望的“数组的数组”结构,所以遍历的时候每个$resultItem都是单个字符串,$resultItem[1]自然为空,导致输出异常。

解决方法

有两种简单的方式可以强制保留数组作为单个元素:

方法一:用逗号前缀包装数组

在返回的数组前加一个逗号,将其包装成单元素数组,PowerShell就不会展开内部的二元数组:

$list1 = 'A','B';
$list2 = '1','2';

$result = foreach ($list1Item in $list1)
{
    foreach ($list2Item in $list2)
    {
        # 逗号前缀强制将二元数组作为单个元素输出
        ,($list1Item, $list2Item)
    }
}

foreach ($resultItem in $result)
{
    Write-Host "$($resultItem[0])-$($resultItem[1])"
}

方法二:预先初始化结果数组并添加元素

先创建一个空数组,每次循环把包装后的二元数组添加进去:

$list1 = 'A','B';
$list2 = '1','2';
$result = @()  # 初始化空数组

foreach ($list1Item in $list1)
{
    foreach ($list2Item in $list2)
    {
        # 用逗号包装后添加到结果数组
        $result += ,($list1Item, $list2Item)
    }
}

foreach ($resultItem in $result)
{
    Write-Host "$($resultItem[0])-$($resultItem[1])"
}

预期输出

运行修改后的脚本,就能得到你想要的结果:

A-1
A-2
B-1
B-2

内容的提问来源于stack exchange,提问作者Martin Brown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:52:13