我有一个数据库中朋友的联系人列表,我想要做的是检索用户联系人,看看是否有其他用户ID,如果不是那么添加它然后把它放回去数据库中。
但是我似乎继续在数组中添加相同的联系人,即使它已经存在并且输出存储在我的数据库中这样
a:2:{i:0;a:1:{i:0;i:1070;}i:1;i:1070;}
这是in_array在第一次检查时未评估为true的乘积。每次运行该功能时,都会添加越来越多的“层”。
提前致谢
这是我的代码
function addfarmertohunter($hunterid,$farmerid){
$select="SELECT contacts from users where id=$hunterid";
$result=mysql_query($select)or die(' add farmer error'. mysql_error());
if (mysql_num_rows($result)==1){
$row=mysql_fetch_array($result);
$contacts=$row[0];
if($contacts==null||$contacts=="N;"||$contacts==""){
$temp=array();
array_push($temp, $farmerid);
}else{
$temp=array(unserialize($contacts));
if(in_array((int)$farmerid, $temp)==FALSE){array_push($temp, $farmerid);}
}
$strcontacts=serialize($temp);
$ins="UPDATE users set contacts='$strcontacts' where id=$hunterid";
mysql_query($ins) or die('add farmer e'.mysql_error());
}
}
答案 0 :(得分:2)
变化:
$temp = array(unserialize($contacts));
为:
$temp = unserialize($contacts);
unserialize()
返回数组,因此每次都会在其周围包含额外的数组。
答案 1 :(得分:2)
首先改变这个
$ temp = array(unserialize($ contacts));
$ temp = unserialize($ contacts);
并且不要在in_array中使用==或====进行检查,请尝试使用
if(in_array((int)$ farmerid,$ temp)){array_push($ temp,$ farmerid);}
OR
if(!in_array((int)$ farmerid,$ temp)){array_push($ temp,$ farmerid);}
因为如果在数组中找到了针,则返回TRUE,否则返回FALSE。