我目前正在为发布状态的用户构建一个类似的系统。我有以下代码在每个状态帖子上显示“赞”:
/* GET THE STATUS LIKE DETAILS */
$qryNumLikes = mysqli_query($redoDB, "SELECT likestatUID,likestatMName FROM statLike WHERE likeStatPostID = '".$statRow['statID']."'");
$numLikes = mysqli_num_rows($qryNumLikes);
while($likeRow = $qryNumLikes->fetch_array(MYSQLI_ASSOC)){
$name[] = $likeRow['likestatMName'];
$nameid[] = $likeRow['likestatUID'];
}
if($numLikes > 0){
if($numLikes == 1){
if(in_array($memID, $nameid)){
$showLikes = 'You like this.';
} else {
$showLikes = $name[0].' likes this.';
}
} elseif($numLikes == 2) {
if(in_array($memID, $nameid)){
if(($key = array_search($memName, $name)) !== false) {
unset($name[$key]);
}
$names = array_values($name);
$showLikes = 'You and '.$names[0].' like this.';
} else {
$showLikes = $name[0].' and '.$name[1].' like this.';
}
} elseif($numLikes == 3) {
if(in_array($memID, $nameid)){
if(($key = array_search($memName, $name)) !== false) {
unset($name[$key]);
}
$names = array_values($name);
$showLikes = $names[0].', '.$names[1].' and you like this.';
} else {
$showLikes = $name[0].', '.$name[1].' and '.($numLikes - 2).' other like this.';
}
} else {
if(in_array($memID, $nameid)){
if(($key = array_search($memName, $name)) !== false) {
unset($name[$key]);
}
$names = array_values($name);
$showLikes = 'You, '.$names[0].' and '.($numLikes - 2).' others like this.';
} else {
$showLikes = $name[0].', '.$name[1].' and '.($numLikes - 2).' others like this.';
}
}
} else {
$showLikes = $numLikes.' Likes';
}
状态一被用户ID 1和2“喜欢”,数组数据如下:
Array ( [0] => 1 [1] => 2 )
状态2仅由用户ID 1“喜欢”,数组数据如下:
Array ( [0] => 1 [1] => 2 [2] => 1 )
如您所见,这是不正确的,它应该只显示数组([0] => 1)。对于我的生活,我无法弄清楚为什么会这样。结果是当用户ID 2正在查看所显示的内容时,它会显示“你喜欢这个”,当它应该显示为“用户ID 1喜欢这个”(当然是名称)。
有人能告诉我代码出错的地方吗?
非常感谢。
答案 0 :(得分:0)
想出来。我只需要先声明数组。 (一直试图解决这个问题几个小时,然后在这里发布后成功,典型)。
$name = array();
$nameid = array();
在while循环之前添加了。