2017-05-30 143 views
0

我有一個多維數組,我用foreach()來顯示它作爲一個菜單。但只顯示最後一個元素。有人可以解釋爲什麼會發生這種情況,以及如何解決它?多維數組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) 
) 

只有示例3將被顯示。

(我用其他原因不同的ID,我會做一個動態的菜單,但不是現在。)

回答

1

這是因爲foreach ($result2 as $row);迭代沒有被告知做任何事情的整個陣列。

然後當它完成時,你在迴應最後一次迭代的行。

簡單地更改爲:

foreach ($result2 as $row){ 
    echo "<li><a href=\"/{$row['Nome']}/\">{$row['Nome']}</a></li>"; 
} 

附:擺脫:{reset($result2);extract ($result2);

+0

感謝:D很簡單,但我昨天編碼的PHP。 –