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

如何在foreach循环中同步处理两个关联数组并对应排序?

问题:如何在同一个foreach循环中同步处理两个对应数组?

我有两个数组,需要在foreach循环中处理它们来修改文件:

  • 数据库名称数组示例:
$dbs = ['Honda', 'Toyota', 'BMW', 'Opel']
  • 对应数据库大小的数组示例:
$dbsSize = ['123', '300', '222', '143']

目前我能通过如下foreach循环遍历数据库名称数组:

foreach ($db in $dbs){
  # 一些逻辑..
}

请问如何在同一个foreach循环中让$dbsSize数组与$dbs数组保持对应顺序,从而能在循环中同时使用$db和对应的$dbsSize值?

期望实现的循环效果类似:

foreach ($db in $dbs) {
  # 使用$db的逻辑
  # 这里需要使用对应$dbsSize的逻辑
}

最终要得到的对应结果示例:

Honda
123

Toyota
300

是否需要创建另一个循环?


解决方案

不需要额外创建循环,有几种实用方法可以实现同步遍历:

方法1:通过索引关联遍历

利用数组的索引来对应两个数组的元素,循环时同时取出索引匹配的内容:

for ($i = 0; $i -lt $dbs.Count; $i++) {
    $db = $dbs[$i]
    $size = $dbsSize[$i]
    
    # 执行你的逻辑,比如输出对应内容
    Write-Output $db
    Write-Output $size
    Write-Output ""
}

方法2:合并为对象数组遍历

把两个数组的对应元素整合成自定义对象,再遍历这个对象数组,代码可读性更强:

# 合并两个数组为对象数组
$dbWithSize = for ($i = 0; $i -lt $dbs.Count; $i++) {
    [PSCustomObject]@{
        Name = $dbs[$i]
        Size = $dbsSize[$i]
    }
}

# 遍历对象数组
foreach ($item in $dbWithSize) {
    # 直接调用对象属性
    Write-Output $item.Name
    Write-Output $item.Size
    Write-Output ""
}

方法3:使用Zip方法(PowerShell 5.1及以上版本)

PowerShell支持数组的Zip方法,可直接将两个数组合并为键值对集合:

foreach ($pair in $dbs.Zip($dbsSize, { $args })) {
    $db = $pair[0]
    $size = $pair[1]
    
    Write-Output $db
    Write-Output $size
    Write-Output ""
}

内容的提问来源于stack exchange,提问作者Sergio Ramos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:01:54