PHP数组数据显示不正确

时间:2016-01-10 12:26:18

标签: php arrays

我目前正在为发布状态的用户构建一个类似的系统。我有以下代码在每个状态帖子上显示“赞”:

/* 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喜欢这个”(当然是名称)。

有人能告诉我代码出错的地方吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

想出来。我只需要先声明数组。 (一直试图解决这个问题几个小时,然后在这里发布后成功,典型)。

$name = array();
$nameid = array();

在while循环之前添加了。