Foreach循环回声

时间:2012-05-20 11:58:40

标签: php foreach

最后一个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/>";
    }
}

1 个答案:

答案 0 :(得分:0)

这一行:

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

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

然后你试着去做

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

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

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