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';
    }
}

如您所见,我想检查两个数组。当有不同的值时,必须回显“成功”,$condition2 在这种情况下,只有一个差异,$condition2[2] = 1因此“成功”必须只回显一次,但它会发生两次!

如果我continue;像上面的例子一样使用,它会跳过整个内部for()吗?

4

2 回答 2

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 指出的那样,您可能想要使用 break 而不是 continue。

其次,在您的代码中,$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 回答