我有一个多维数组,我使用foreach()
将其显示为菜单。但只显示最后一个元素。有人能解释为什么会发生这种情况以及如何解决这个问题吗?
{$sql = $mysqli->query("SELECT ID, Nome, ID2 FROM tipo WHERE Tipo2 IS NULL ORDER by ID, ID2");
$result2 = $sql->fetch_all(MYSQLI_ASSOC);
print_r ($result2);
mysqli_free_result($sql);
}
?>
<ul>
<?php
{reset($result2);
extract ($result2);
foreach ($result2 as $row);
echo "<li><a href=\"/{$row['Nome']}/\">{$row['Nome']}</a></li>";
} ?>
</ul>
阵列:
Array (
[0] => Array ( [ID] => 1 [Nome] => Example1 [ID2] => 1 )
[1] => Array ( [ID] => 2 [Nome] => Example2 [ID2] => 2 )
[2] => Array ( [ID] => 3 [Nome] => Example3 [ID2] => 3 )
)
仅显示Example3。
(我出于其他原因使用不同的ID,我会做一个动态菜单,但现在不行。)
答案 0 :(得分:1)
那是因为foreach ($result2 as $row);
迭代整个数组而不被告知做任何事情。
然后当它完成时,你回显最后一个迭代的行。
只需更改为:
foreach ($result2 as $row){
echo "<li><a href=\"/{$row['Nome']}/\">{$row['Nome']}</a></li>";
}
P.S。摆脱:{reset($result2);
和extract ($result2);