13

以下は期待どおりに機能します。

$values = @( ("a", "b"), ("c", "d") )
foreach($value in $values)
{
  write-host "Value 0 =" $value[0]
  write-host "Value 1 =" $value[1]
}

その結果(1):

Value 0 = a
Value 1 = b
Value 0 = c
Value 1 = d

しかし、$values 変数を次のように変更すると:

$values = @( ("a", "b") )

結果(2)は次のとおりです。

Value 0 = a
Value 1 =
Value 0 = b
Value 1 =

一方、結果(3)は次のようになると予想していました。

Value 0 = a
Value 1 = b

$value を次のように変更します。

$values = @( ("a"), ("b") )

上記の result(2) と同じ結果が得られます。これらは非常に異なるデータ表現です。

私が書いているスクリプトは、最初の次元の長さが 0 から N までの 2 次元配列を処理できる必要があります。最初のレベルの要素を追加する必要がある場合 (または削除) スクリプトのロジックを変更する必要はありません。「データ」を編集できるようにしたいのですが。

だから私の質問は次のとおりです: 配列の最初の次元の長さが 1 のときに、示されているforeachループが正しく機能するように、2 次元配列をどのように表記しますか?

get-host は次のように応答します。

Name             : ConsoleHost
Version          : 2.0
InstanceId       : 2338657f-e474-40d8-9b95-7e2b5f6a8acf
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : en-US
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace
4

1 に答える 1