Php 转到的解决方法

Php 转到的解决方法,php,goto,Php,Goto,当我需要检查array2是否有来自array1的值(随机生成)时,我遇到了这种情况。到目前为止,我想到了 redo : $id=mt_rand(0,count(array1)); foreach($array2 as $arr) { if($arr[0]==$id) goto redo; } //Some actions if randomly generated value from array1 wasn't found in array2 但我真的不想使用goto。我很确定有一些

当我需要检查array2是否有来自array1的值(随机生成)时,我遇到了这种情况。到目前为止,我想到了

redo : $id=mt_rand(0,count(array1));
foreach($array2 as $arr)
{
    if($arr[0]==$id) goto redo;
}
//Some actions if randomly generated value from array1 wasn't found in array2

但我真的不想使用goto。我很确定有一些简单的解决方案可以做到这一点,但我就是想不出来D:

您可以使用带有
continue
的数值参数:

试试这个

$flag=true;
 do{
      $id=mt_rand(0,count(array1);

      foreach( $array2 as $arr )
        if( $arr[0] == $id ) break;

      // do it and set flag to false when you need to exit;

    } while($flag);

do{$id=mt_rand(…);$contains=/*确定数组是否包含此id*/;}而($contains)按照建议使用适当的结构(
do while
),并记住。。。永远不要使用
goto
操作符。这是个笑话。真实情况:查看foreach之后if just set$flag=false的底部,do while循环将在两种情况下结束(如果有匹配项,如果没有)。然后在中断之前需要一个额外的标志,它将在foreach循环之后进行检查,以查看是否存在匹配。这很麻烦,所以biziclop的代码在这里工作得更好
$flag=true;
 do{
      $id=mt_rand(0,count(array1);

      foreach( $array2 as $arr )
        if( $arr[0] == $id ) break;

      // do it and set flag to false when you need to exit;

    } while($flag);