le seguenti opere come previsto:PowerShell: Due array dimensione
$values = @(("a", "b"), ("c", "d"))
foreach($value in $values)
{
write-host "Value 0 =" $value[0]
write-host "Value 1 =" $value[1]
}
che i risultati (1) in:
Value 0 = a
Value 1 = b
Value 0 = c
Value 1 = d
Ma se cambio il $ valori delle variabili a:
$values = @(("a", "b"))
il risultato (2) è:
Value 0 = a
Value 1 =
Value 0 = b
Value 1 =
mentre mi sarei aspettato il risultato (3) da:
Value 0 = a
Value 1 = b
La modifica del valore $ a:
$values = @(("a"), ("b"))
dà lo stesso risultato di risultato (2) di cui sopra. Queste sono rappresentazioni di dati molto diverse.
Lo script che sto scrivendo deve essere in grado di gestire array bidimensionali in cui la prima dimensione ha lunghezza da 0 a N. Mi piacerebbe essere in grado di scrivere lo script in modo che se un elemento di primo livello ha bisogno da aggiungere (o rimuovere) che non devo modificare la logica dello script; Mi piacerebbe essere in grado di modificare solo i "dati".
Quindi la mia domanda è: come si annota un array bidimensionale in modo che il ciclo foreach foreach funzioni correttamente quando la prima dimensione dell'array ha una lunghezza di 1?
get-host risponde con:
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
Grazie per il collegamento. Questa è una sintassi piuttosto strana. Interpreterei l'esempio che fornisci come definizione di $ values [1,0] e $ values [1,1]. –