0
$condition1[0] = 2;
$condition1[1] = 3;
$condition2[0] = 3;
$condition2[1] = 2;
$condition2[2] = 1;

for($i=0; $i<3; $i++){
    for($j=0; $j<2;$j++){
        if($condition1[$j] == $condition2[$i]){
            $permission = false;
            continue;
        }
    }
    if($permission){
        echo 'success';
    }
}

ご覧のとおり、2 つの配列をチェックしたいと思います。異なる値がある場合は「成功」をエコーする必要があります$condition2 。この場合、違いは 1 つしかない$condition2[2] = 1ため、「成功」は 1 回だけエコーする必要がありますが、2 回発生します。

また、上記の例のように使用するcontinue;と、内部全体がスキップされfor()ますか?

4

2 に答える 2

1

あなたが気にしているのは、1つの違いを見つけることだけであれば、以下のコードでうまくいくはずです:

$permission = false;
for($i=0; $i<3; $i++){
    for($j=0; $j<2;$j++){
        if($condition1[$j] != $condition2[$i]){
            $permission = true;
            break;
        }
    }
} 

    if($permission){
        echo 'success';
    }
于 2013-07-04T20:19:35.273 に答える
0

最初に Barmar が指摘するように、継続ではなく中断を使用することをお勧めします。

次に、コード内で $permission が true に設定されることはありません。ですから、「成功」が響かないのは当然のことです。

多分あなたが望むのはこれです(私はあなたが何を達成したいのか分からないことを認めなければなりません):

$condition1[0] = 2;
$condition1[1] = 3;
$condition2[0] = 3;
$condition2[1] = 2;
$condition2[2] = 1;

for($i=0; $i<3; $i++){
    $permission = true;
    for($j=0; $j<2;$j++){
        if($condition1[$j] == $condition2[$i]){
            $permission = false;
            break;
        }
    }
    if($permission){
        echo 'success';
    }
}
于 2013-07-04T20:18:30.327 に答える