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']) 

これは 2 つのレベルで間違っています。この時点では $userintroop は配列ではないため、['userid']パラメーターを持つことはできません。これはフェッチ操作の失敗の結果であるため、FALSE 以外の値を持つことはできません。

そのため、最後のループは実行されますが、出力を生成するための条件は文字通り満たすことが不可能であるため、何も生成されません。

于 2012-05-20T13:20:45.863 に答える