我创建了一个函数,它查找特定列中的所有行(记录),生成一个随机数,然后检查该列是否已经存在,如果生成的随机数存在,则重新启动函数(递归),如果它不存在,然后将其作为新的插入。
$verifs = mysqli_query($conlink, 'SELECT verif FROM memebers');
$records = array();
while($record = mysqli_fetch_array($verifs,MYSQLI_NUM)) {
$records[] = $record[0];
}
function randomize(){
$rand= rand(1,5);
if(in_array($rand, $GLOBALS['records'])){
randomize();
}else{
return $rand;
}
}
mysqli_query($conlink, "INSERT INTO `memebers`(`verif`) VALUES (".randomize().")");我希望每次刷新php页面时都必须添加一个数字。
是这样的,但是当我到达3或4张记录时,刷新页面并不会添加任何内容!因此,return语句必须防止函数是递归的。我的逻辑有什么问题吗谢谢
发布于 2016-05-29 12:24:35
在我看来,您没有正确地使用回调函数。如果您不知道,当您在函数中使用一个函数时,实际上您必须在参数中传递该函数。在参数中有一个函数的函数称为回调函数,您可以在下面的文章中更多地了解它们:What is a callback function and how do I use it with OOP
然后,我将将您的randomize函数更改为以下代码:
function randomize($callbackRandomize){
$rand= rand(1,5);
if(in_array($rand, $GLOBALS['records'])){
return $callbackRandomize($callbackRandomize);
}else{
return $rand;
}
}并将最后一行代码更改为:
mysqli_query($conlink, "INSERT INTO `memebers`(`verif`) VALUES (".randomize('randomize').")");如果这对你有用的话请告诉我。
https://stackoverflow.com/questions/37509692
复制相似问题