这是建立$ ret到一个长的1维数组而不是数组数组。我需要它是一个用$ subret对象填充的数组。感谢。
//ACTUPT EXEC PGM=*.FINANCE.ACCTREC.UPDATE,
// REGION=1M,TIME=(,6),COND=(0,EQ,VALIDATE)
答案 0 :(得分:1)
可能还有其他方法,但是arraylist通常适合我,在这种情况下我会这样做:
$ret = New-Object System.Collections.ArrayList
然后
$ret.add($subret)
答案 1 :(得分:1)
修改强>
创建一个元组数组比使用包含Name
Value
的PsObjects作为两个属性填充数组更复杂。
从$item
中选择所需的属性,然后将它们添加到阵列
$item = $item | select Name, Value
$arr = @()
$arr += $item
您可以通过执行此操作来引用此数组中的值
foreach($obj in $arr)
{
$name = $obj.Name
$value = $obj.Value
# Do actions with the values
}
答案 2 :(得分:1)
疑似预先存在的重复问题确实是重复的:
鉴于带有数组的+
作为LHS 连接数组,您必须嵌套 RHS ,
(数组构造运算符)的一元形式,如果它是一个应该作为单个元素添加的数组:
# Sample input
$items = [pscustomobject] @{ Name = 'n1'; Value = 'v1'},
[pscustomobject] @{ Name = 'n2'; Value = 'v2'}
$ret = @() # create an empty *array*
foreach ($item in $items) {
$subret = $item.Name, $item.Value # use of "," implicitly creates an array
$ret += , $subret # unary "," creates a 1-item array
}
# Show result
$ret.Count; '---'; $ret[0]; '---'; $ret[1]
这会产生:
2
---
n1
v1
---
n2
v2
使用 [System.Collections.ArrayList]
及其.Add()
方法的原因也是如此 - 在构建 large 时,这种方法通常更可取数组 - 是 .Add()
只接受单个对象作为要添加的项目,无论该对象是标量还是数组:
# Sample input
$items = [pscustomobject] @{ Name = 'n1'; Value = 'v1'},
[pscustomobject] @{ Name = 'n2'; Value = 'v2'}
$ret = New-Object System.Collections.ArrayList # create an *array list*
foreach ($item in $items) {
$subret = $item.Name, $item.Value
# .Add() appends whatever object you pass it - even an array - as a *single* element.
# Note the need for $null = to suppress output of .Add()'s return value.
$null = $ret.Add($subret)
}
# Produce sample output
$ret.Count; '---'; $ret[0]; '---'; $ret[1]
输出与上述相同。