Php 转到的解决方法
当我需要检查array2是否有来自array1的值(随机生成)时,我遇到了这种情况。到目前为止,我想到了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。我很确定有一些
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);