0

これを解決しようとしていて、実際にはあまり運がありません。次のコード ブロックの if ステートメントが true になることはありませんが、これは理解できません。

$array1 = "red", "blue", "green", "yellow"
$array2 = "rose", "sky", "grass", "sand"
$both_arrays = $array1, $array2

for ($c=0; $c -lt 4; $c++) {

$object = $both_arrays[0][$c]
$colour = $both_arrays[1][$c]

Write-Host $c "-" $object
Write-Host $c "-" $colour

if ( ($colour.contains("green") ) ) { Write-Host "HELL YEAH! Green is my favourite colour!" }

}

次のように出力します。

0 - red
0 - rose
1 - blue
1 - sky
2 - green
2 - grass
3 - yellow
3 - sand

ただし、1 つの配列だけを扱っている場合は問題なく動作します。

$array1 = "red", "blue", "green", "yellow"

for ($c=0; $c -lt 4; $c++) {

$colour = $array1[$c]

Write-Host $c "-" $colour

if ( ($colour.contains("green") ) ) { Write-Host "HELL YEAH! Green is my favourite colour!" }

}

期待どおりの出力が得られます。

0 - red
1 - blue
2 - green
HELL YEAH! Green is my favourite colour!
3 - yellow

スメグはどうなっているの?助けてください!

私が書いている別のスクリプトに概念を適用しようとすると、上記のコードの例でまだエラーが発生します。

for ($c=0; $c -lt 3; $c++) { #$arrCheckpoint, 

$ckname = $arrCheckpointNameAndStatus[0][$c]
$ckstatus = $arrCheckpointNameAndStatus[1][$c]

Write-Host $ckname

if ( ($ckname.contains("Standard Checkpoint") ) ) { Write-Host "Hit." }

}

Write-Host "End of Script"

次のエラーがスローされます。

Method invocation failed because [System.Object[]] doesn't contain a method named 'contains'.
At C:\script.ps1:225 char:27
+     if ( ($ckname.contains <<<< ("Standard Checkpoint") ) ) { Write-Host "Hit." }
+ CategoryInfo          : InvalidOperation: (contains:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound

本当に今私を悩ませ始めています!

4

1 に答える 1

1

オブジェクトとカラー配列の配列インデックスが逆になっているようです。

于 2013-01-30T13:44:05.010 に答える