0

最后一个 foreach 循环似乎没有回显我想要的列表,它没有打印任何内容。我怎样才能解决这个问题?我知道它变得相当复杂,但任何帮助将不胜感激。

$allTroopsList = array();
$allMissionsList = array();
while ($mytroops = $alltroops->fetch_assoc()) 
{
    $allTroopsList []= $mytroops;
}

while ($mymissions = $allmissions->fetch_assoc()) 
{
    $allMissionsList []= $mymissions;
}

while($userintroop = $allUsersintroops->fetch_assoc()) 
{
    if($userintroop['userid'] == $_SESSION['userid']) 
    {
        echo "<ul class='troop'>";   
        echo "<li>" . $userintroop['troopid'].  " </li>";
        foreach($allTroopsList as $mytroops) 
        {
            if($userintroop['troopid'] == $mytroops['troopid']) 
            {
                echo "<li> Troop description: " . $mytroops['description'].  " </li>";

                foreach($allMissionsList as $mymissions) 
                {
                    if($mytroops['missionid'] == $mymissions['missionid']) 
                    {   
                        echo "<li> Missionname: " . $mymissions['missionname'].  " </li>";
                        echo "<br/>";
                        echo "</ul>";
                    }
                }
            }
        }
    }   
}           

foreach($allUsers as $myotherusers) 
{
    if($userintroop['userid'] == $myotherusers['userid']) 
    {

        echo "<li> other users: " . $myotherusers['username'].  " </li>";
        echo "<br/>";
    }
}
4

1 回答 1

0

这一行:

while($userintroop = $allUsersintroops->fetch_assoc()) 

是从数据库中获取结果,对吗?这意味着在某些时候你用完了要获取的行,并且 $userintroop 将成为布尔值 FALSE。

然后稍后你尝试做

if($userintroop['userid'] == $myotherusers['userid']) 

这在两个级别上是错误的 - $userintroop 此时不会是数组,因此它永远不会有['userid']参数。而且由于它是获取操作失败的结果,因此永远不会有任何值 OTHER 除了 FALSE。

所以最后一个循环确实执行了,但永远不会产生任何东西,因为产生输出的条件实际上是不可能满足的。

于 2012-05-20T13:20:45.863 回答