Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php如何检查重复的结果?_Php - Fatal编程技术网

Php如何检查重复的结果?

Php如何检查重复的结果?,php,Php,您好,我目前正在从数据库基用户ID查询竞赛,但是我希望避免在结果数组中选择重复项,此函数getrandomspecies接收数组结果,此数组结果迭代7次。如何测试我不在结果数组中放置重复项?我得到了几份副本 function getrandomspecies($array_result){ //database connection $dbn = adodbConnect(); foreach($array_result as $possible){

您好,我目前正在从数据库基用户ID查询竞赛,但是我希望避免在结果数组中选择重复项,此函数getrandomspecies接收数组结果,此数组结果迭代7次。如何测试我不在结果数组中放置重复项?我得到了几份副本

    function getrandomspecies($array_result){

     //database connection
     $dbn = adodbConnect();

     foreach($array_result as $possible){

    //query the results
    $querys= "select * from taxonomic_units where tsn = $possible";
    $resultss = $dbn -> Execute($querys);

    while($rowss=$resultss->FetchRow()){

        $id = $rowss['tsn']; //there ID
        $ranksss = $rowss['rank_id']; //ranking id, I choose 220 and 230



            if($ranksss == 220 || $ranksss == 230){
                $prelimary_array[] = $id;

            }
        }


   //grab random index
   $index = array_rand($prelimary_array,1);

   //put result id into a variable 
   $newspecies = $prelimary_array[$index];

   //put that variable in an array
    $results_array[] = $newspecies; //there is 7 newspecies/winners at the end, I dont want duplicates
 }

  return $results_array;
}

为什么不尝试洗牌数组,然后选择前X个数字


这样,就不必检查结果数组中是否有重复项,它将永远不会出现在第一位

MySQL应该是:

select distinct tsn, rank_id from taxonomic_units where tsn = $possible

但你最好使用事先准备好的陈述。

这是怎么回事?您可以通过一个查询执行此操作:

$querys= "select DISTINCT tsn from taxonomic_units where tsn IN (".implode(",",$array_result).") AND rank_id IN (220,230) ORDER BY RAND() LIMIT 7 ";

循环结果数组,如果它不存在,则添加它。如果你最后的成绩不到7分,再做一次大循环

替换此行:

$results_array[] = $newspecies;
作者:

//在这里,如果$loop\u 1\u more\u time等于1,则重新开始。要重新开始并确保只有7个而不是6个或更少,可以将第一个大的“foreach”循环替换为一个“for”循环,该循环取决于$array\u结果的count(),并且$array\u结果将是array\u结果[$i],而不是$mably$我将从0开始,在循环的每一端递增。如果­$loop\u 1\u more\u time==1;,则它不会增加;。 例如:

for ($i = 0; $i < count($array_result); $i++) {
    //stuff
    //if ($loop_1_more_time=1;) { $i--; }
}
for($i=0;$i
现在有了一个简单的方法。您可以尝试在查询中使用group by从分类单位中选择*,其中tsn=$可能的group by tsn。或者由其他coulmn进行分组。更改您的mysql查询以选择distinct或group byUse mysql的
distinct
认为此代码是由sssnakess编写的。但是,它们可能有10个重复项,在shufflinghey之后可能会出现在数组顶部。我得到了一个infinte循环。我尝试了所有解决方案,您能帮助我吗。我一字不差地实现了它。请注意,开始计算的数组必须是非关联的。您所报告的是,每个循环中不可能有7个不同的元素,即使它重新启动,因此循环将无限大,并在没有元素的情况下永远搜索新元素。
for ($i = 0; $i < count($array_result); $i++) {
    //stuff
    //if ($loop_1_more_time=1;) { $i--; }
}