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