PHP数组块被访问了两次,我不知道为什么

PHP数组块被访问了两次,我不知道为什么,php,arrays,loops,chunks,Php,Arrays,Loops,Chunks,我写了一个启动比赛的函数,人们收到电子邮件两次而不是一次。所以我试着调试一些东西。如您所见,我用数据库中的信息填充数组部分[],对其进行随机洗牌,然后向参与者发送电子邮件,告知他们的对手。我删掉了整封邮件,只打印了阵列。但它会被打印两次。让我感到恶心的是其中一个指纹出现在 echo "<hr>"; 这很疯狂,因为没有输出 function start_pre($t_id) { global $con; $participants=array(); $sql =

我写了一个启动比赛的函数,人们收到电子邮件两次而不是一次。所以我试着调试一些东西。如您所见,我用数据库中的信息填充数组部分[],对其进行随机洗牌,然后向参与者发送电子邮件,告知他们的对手。我删掉了整封邮件,只打印了阵列。但它会被打印两次。让我感到恶心的是其中一个指纹出现在

echo "<hr>";
这很疯狂,因为没有输出

function start_pre($t_id) {
   global $con;
    $participants=array();
    $sql = "SELECT u.name, u.btag, u.email FROM participant p, user u WHERE p.tournament_id = ".$t_id." AND p.user_id = u.user_id";
    $result = mysqli_query($con, $sql);
    if ($result) {
        while ($row = mysqli_fetch_array($result)) {
            $part[] = array(
                "name" => $row['name'], 
                "btag" => $row['btag'], 
                "email" => $row['email']
                );        
    }
    } else {echo "Problem.";}

    shuffle($part);
    echo "<hr>";

    $paare = array_chunk($part, 2);
    foreach ($paare as $paar) {

            print_r($paar);

    }

    $sql = "UPDATE tournament SET enrollable='0' WHERE tournament_id='".$t_id."'";
    $result = mysqli_query($con, $sql);

    }

由于隐私和其他原因,我不能提供实际输出的屏幕截图,但我打赌你可以想象水平线上下的打印阵列是什么样子的。感谢您的帮助

必须调用整个函数两次。另外,如果在mysql中只使用order by rand而不是shuffle,它的性能会更好。

您检查了$row的输出了吗?我的意思是,MySQL返回两次?也许您的start_pre函数被调用了两次,这可以解释上面的输出。我决定将print_r更改为一个小的迭代echo$I,$I++并获得两次数字。我没有两次调用该函数,并且mysql输出正常/确保MySql结果集具有单时间值!旁注:在将$t_id传递到查询之前,请确保转义它,或者使用准备好的语句。如果isset$_POST['quali_submit']{start_pre$_POST['t_id'];},则不会调用它一次,这很简单。这是代码中调用函数的唯一部分。哦,顺便说一句,谢谢你的建议。要考虑一下。是的,只是在功能上,但是我只是看到这也是我的神不介意的。我将函数复制到页面顶部,而不是剪切它。它叫了两次。很抱歉占用您的时间,但也谢谢您。