2017-04-18 34 views
2

我有这个奇怪的行为,从我画的表。当我添加超过7个条目到数据库来绘制表格时,它好像崩溃了,并没有画任何东西。 7或更少,它工作得很好。阵列似乎停止后,7项

我不知道为什么它会这样做?

$strSQL = " 
SELECT u.username playername 
    , IFNULL(a.avatar,'default.jpg') playeravatar 
    FROM add_tournament_repeat_guests p 
    JOIN nfojm_users u 
    ON p.guestID = u.id 
    LEFT 
    JOIN nfojm_comprofiler a 
    ON u.id = a.user_id 
WHERE p.parent_id = $tournID 
"; 

$query = mysqli_query($con, $strSQL); 

while ($row = mysqli_fetch_array($query)) { 

    if (!in_array($row["playername"], $playernames)) { 
     $i=0; 
     $indexes[$row["playername"]] = 0; 
     $playernames[] = $row["playername"];  
    } else {  
     $indexes[$row["playername"]]++; 
     $i = $indexes[$row["playername"]]; 
    } 
    if (!in_array($row["playeravatar"], $playeravatars)) { 
     $i=0; 
     $indexes[$row["playeravatar"]] = 0; 
     $playeravatars[] = $row["playeravatar"];  
    } else {  
     $indexes[$row["playeravatar"]]++; 
     $i = $indexes[$row["playeravatar"]]; 
    } 


    } 
    print('<table class="block" style="border:2px solid #999999; width:175px; background-color: aliceblue; margin-top:-7px"><thead><tr><th style="color:white; background-color:#444444; height:35px;"> <h2>Leaderboard</h2> </th></tr></thead><tbody>'); 

    foreach (array_combine($playeravatars, $playernames) as $playeravatar => $playername) { 

    print("<tr><td style='padding-left:8px;' class='block'><h4><img src='http://www.arcadeicons.com/images/comprofiler/" . $playeravatar . "' height='35' width='35' style='border-radius:50%'> " . $playername . "</h4></td></tr>"); 

} 
+0

进一步的测试显示它不是项目的数量,它获得了超过一个虚拟形象的NULL结果。我怎么能写得更好,使2个或更多NULLS不打破数组? –

+0

你可以在array_combine之前打印两个数组$ $ playeravatars和$ playernames并将其添加到你的问题中?另外为什么两个不同的数组,然后结合他们?你可以这样做$ player [$ row [“playeravatar”]] = $ player [“playername”] – Hmmm

回答

0

$playeravatars$playernames有不同的长度,这就是为什么array_combine()回报FALSE,而不是像您期望的(php.net/array_combine

2级的用户使用不同的名称,并没有化身会在$playernames产生两行合并阵,但只1行$playeravatars - 这是长度不匹配的原因

您可以编写简单的代码:

echo '<table class="block" style="border:2px solid #999999; width:175px; background-color: aliceblue; margin-top:-7px"><thead><tr><th style="color:white; background-color:#444444; height:35px;"> <h2>Leaderboard</h2> </th></tr></thead><tbody>'); 
while ($row = mysqli_fetch_array($query)) { 
    echo "<tr><td style='padding-left:8px;' class='block'><h4><img src='http://www.arcadeicons.com/images/comprofiler/" . $row['playeravatar'] . "' height='35' width='35' style='border-radius:50%'> " . $row['playername'] . "</h4></td></tr>"; 
} 
+0

感谢你的支持,现在运行良好。仍在学习基础知识,以便犯大量错误。 –

+0

你能接受我的回答吗? :) – mochalygin

+0

全部完成,再次非常感谢 –