最后一个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/>";
}
}
答案 0 :(得分:0)
这一行:
while($userintroop = $allUsersintroops->fetch_assoc())
从数据库中获取结果,对吧?这意味着在某些时候你用完了要获取的行,$ userintroop将成为一个布尔值FALSE。
然后你试着去做
if($userintroop['userid'] == $myotherusers['userid'])
在两个级别上是错误的 - $ userintroop此时不会是一个数组,因此它永远不会有['userid']
参数。因为它是获取操作失败的结果,所以永远不会有任何值而不是FALSE。
所以最后一个循环确实执行,但是永远不会产生任何东西,因为产生输出的条件实际上是不可能满足的。