Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.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,问题: 基本上我想给那些还没有接受挑战的人发送提醒邮件。从挑战表中我得到了被挑战的电子邮件,然后从挑战表中我得到了接受挑战的电子邮件用户名 问题 我想基本上从挑战表中的数组中删除a_挑战表中的电子邮件地址,因为这些人已经接受了挑战,所以我不想向他们发送提醒电子邮件。任何帮助都将不胜感激 代码 发送电子邮件至以下地址: 预期产量 发送电子邮件至以下地址: 您不希望在PHP中解决这个问题,而是希望在数据库的查询中限制这些结果。基本上,代码应该是这样的: select request.*, team.

问题:

基本上我想给那些还没有接受挑战的人发送提醒邮件。从挑战表中我得到了被挑战的电子邮件,然后从挑战表中我得到了接受挑战的电子邮件用户名

问题

我想基本上从挑战表中的数组中删除a_挑战表中的电子邮件地址,因为这些人已经接受了挑战,所以我不想向他们发送提醒电子邮件。任何帮助都将不胜感激

代码

发送电子邮件至以下地址:

预期产量

发送电子邮件至以下地址:


您不希望在PHP中解决这个问题,而是希望在数据库的查询中限制这些结果。基本上,代码应该是这样的:

select request.*, team.*  
from teams team, team_request request  
where team.name=request.team_name  
and request.accepted = false

这当然是推测,直到您可以发布完整的模式。

您不想在PHP中解决这个问题,而是想在数据库的查询中限制这些结果。基本上,代码应该是这样的:

select request.*, team.*  
from teams team, team_request request  
where team.name=request.team_name  
and request.accepted = false
这当然是推测,直到您可以发布完整的模式。

我假设用户名字段包含电子邮件,因此您可以

//start while loop to fetch the records
//*** NEW LINE HERE ***
$usedmails=array();
while($row_tr = $dbCon->fetchArray($result_team_request)){
    $t_name = $row_tr['t_name'];
    $c_emails = $row_tr['c_emails'];
    echo "<br /><br />".$t_name."<br /><br />";

        $query_teams = "Select * from teams where t_name='".$t_name."'";//query to fetch records from teams table like usernames who have accepted the challenge, etc
        //echo $query_teams;
        $result_teams = $dbCon->query($query_teams);//execute query
        while($row_teams = $dbCon->fetchArray($result_teams)){
            echo "Accepted==> ". $row_teams['full_name']." -- ";
            echo $row_teams['username']."<br /><br />";
            //*** NEW LINE HERE ***
            $usedmails[]=$row_teams['username'];
        }//end while teams..

    //echo $c_emails."<br /><br />";
    $c_emails = explode(',', $c_emails);
    // *** NEW LINE HERE ***
    $c_emails=array_diff($c_emails,$usedmails);
    for($i=0; $i<count($c_emails); $i++){
        echo $c_emails[$i]."<br />";
    }//end for
我假设username字段包含电子邮件,因此您可以

//start while loop to fetch the records
//*** NEW LINE HERE ***
$usedmails=array();
while($row_tr = $dbCon->fetchArray($result_team_request)){
    $t_name = $row_tr['t_name'];
    $c_emails = $row_tr['c_emails'];
    echo "<br /><br />".$t_name."<br /><br />";

        $query_teams = "Select * from teams where t_name='".$t_name."'";//query to fetch records from teams table like usernames who have accepted the challenge, etc
        //echo $query_teams;
        $result_teams = $dbCon->query($query_teams);//execute query
        while($row_teams = $dbCon->fetchArray($result_teams)){
            echo "Accepted==> ". $row_teams['full_name']." -- ";
            echo $row_teams['username']."<br /><br />";
            //*** NEW LINE HERE ***
            $usedmails[]=$row_teams['username'];
        }//end while teams..

    //echo $c_emails."<br /><br />";
    $c_emails = explode(',', $c_emails);
    // *** NEW LINE HERE ***
    $c_emails=array_diff($c_emails,$usedmails);
    for($i=0; $i<count($c_emails); $i++){
        echo $c_emails[$i]."<br />";
    }//end for

我认为最简单的方法是,在将电子邮件地址分解成数组之前,不要从字符串中删除它。顺便说一句,在数据库中存储电子邮件地址是一种可怕的方式

无论如何,我只是假设$row_teams['username']是电子邮件地址 以下是我认为最简单的代码实现方法:

    while($row_tr = $dbCon->fetchArray($result_team_request)){
        $t_name = $row_tr['t_name'];
        $c_emails = $row_tr['c_emails'];
        echo "<br /><br />".$t_name."<br /><br />";


            $query_teams = "Select * from teams where t_name='".$t_name."'";//query to fetch records from teams table like usernames who have accepted the challenge, etc
            //echo $query_teams;
            $result_teams = $dbCon->query($query_teams);//execute query
            while($row_teams = $dbCon->fetchArray($result_teams)){
                echo "Accepted==> ". $row_teams['full_name']." -- ";
                echo $row_teams['username']."<br /><br />";

                //my new code line:
            $c_emails = str_replace($row_teams['username'],'',$c_emails);
            }//end while teams..
            $c_emails = explode(',', $c_emails); 

        //echo $c_emails."<br /><br />";

        for($i=0; $i<count($c_emails); $i++){
            echo $c_emails[$i]."<br />";
        }//end for
    }//end while team_request..

我认为最简单的方法是,在将电子邮件地址分解成数组之前,不要从字符串中删除它。顺便说一句,在数据库中存储电子邮件地址是一种可怕的方式

无论如何,我只是假设$row_teams['username']是电子邮件地址 以下是我认为最简单的代码实现方法:

    while($row_tr = $dbCon->fetchArray($result_team_request)){
        $t_name = $row_tr['t_name'];
        $c_emails = $row_tr['c_emails'];
        echo "<br /><br />".$t_name."<br /><br />";


            $query_teams = "Select * from teams where t_name='".$t_name."'";//query to fetch records from teams table like usernames who have accepted the challenge, etc
            //echo $query_teams;
            $result_teams = $dbCon->query($query_teams);//execute query
            while($row_teams = $dbCon->fetchArray($result_teams)){
                echo "Accepted==> ". $row_teams['full_name']." -- ";
                echo $row_teams['username']."<br /><br />";

                //my new code line:
            $c_emails = str_replace($row_teams['username'],'',$c_emails);
            }//end while teams..
            $c_emails = explode(',', $c_emails); 

        //echo $c_emails."<br /><br />";

        for($i=0; $i<count($c_emails); $i++){
            echo $c_emails[$i]."<br />";
        }//end for
    }//end while team_request..

预期输出和实际输出之间的差异是什么?选择。。。从…起其中地址不在“从团队中选择地址…”或类似的内容中。让数据库来做吧!您也可以在mysql查询中执行这些操作,而不是在PHP中执行这些操作。我认为这很容易。为什么不只选择那些没有发送提醒消息的地址呢?@colortheweb,这就是为什么要规范化数据库,不在同一字段中存储多个值的原因!:P预期输出和实际输出之间的差异是什么?选择。。。从…起其中地址不在“从团队中选择地址…”或类似的内容中。让数据库来做吧!您也可以在mysql查询中执行这些操作,而不是在PHP中执行这些操作。我认为这很容易。为什么不只选择那些没有发送提醒消息的地址呢?@colortheweb,这就是为什么要规范化数据库,不在同一字段中存储多个值的原因!:PIt为我工作,但我收到了错误通知:未定义的偏移量:第31行的/var/www/vhosts/strictexgames.com/httpdocs/dx_scores/emails.php中的1 in/var/www/vhosts/strictexgames.com/httpdocs/dx_scores/emails.php。我工作,但我收到了错误通知:第31行的/var/www/vhosts/strictexgames.com/httpdocs/dx_scores/emails
//start while loop to fetch the records
//*** NEW LINE HERE ***
$usedmails=array();
while($row_tr = $dbCon->fetchArray($result_team_request)){
    $t_name = $row_tr['t_name'];
    $c_emails = $row_tr['c_emails'];
    echo "<br /><br />".$t_name."<br /><br />";

        $query_teams = "Select * from teams where t_name='".$t_name."'";//query to fetch records from teams table like usernames who have accepted the challenge, etc
        //echo $query_teams;
        $result_teams = $dbCon->query($query_teams);//execute query
        while($row_teams = $dbCon->fetchArray($result_teams)){
            echo "Accepted==> ". $row_teams['full_name']." -- ";
            echo $row_teams['username']."<br /><br />";
            //*** NEW LINE HERE ***
            $usedmails[]=$row_teams['username'];
        }//end while teams..

    //echo $c_emails."<br /><br />";
    $c_emails = explode(',', $c_emails);
    // *** NEW LINE HERE ***
    $c_emails=array_diff($c_emails,$usedmails);
    for($i=0; $i<count($c_emails); $i++){
        echo $c_emails[$i]."<br />";
    }//end for
    while($row_tr = $dbCon->fetchArray($result_team_request)){
        $t_name = $row_tr['t_name'];
        $c_emails = $row_tr['c_emails'];
        echo "<br /><br />".$t_name."<br /><br />";


            $query_teams = "Select * from teams where t_name='".$t_name."'";//query to fetch records from teams table like usernames who have accepted the challenge, etc
            //echo $query_teams;
            $result_teams = $dbCon->query($query_teams);//execute query
            while($row_teams = $dbCon->fetchArray($result_teams)){
                echo "Accepted==> ". $row_teams['full_name']." -- ";
                echo $row_teams['username']."<br /><br />";

                //my new code line:
            $c_emails = str_replace($row_teams['username'],'',$c_emails);
            }//end while teams..
            $c_emails = explode(',', $c_emails); 

        //echo $c_emails."<br /><br />";

        for($i=0; $i<count($c_emails); $i++){
            echo $c_emails[$i]."<br />";
        }//end for
    }//end while team_request..