我创建了一个查找特定列中所有行(记录)的函数, 生成一个随机数,然后检查它是否已经存在该列,如果生成的随机数存在则重启该函数(递归) 如果它不存在则将其插入为新的。
$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
语句必须阻止函数递归。
我的逻辑有什么不对吗?
感谢
答案 0 :(得分:1)
在我看来,您没有正确使用回调函数。如果您不知道,当您在函数中使用函数时,您实际上必须在参数内传递该函数。在参数中具有函数的函数称为回调函数,您可以在以下帖子中阅读有关它们的更多信息: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').")");
如果这对您有用,请告诉我。