多次使用相同的foreach

时间:2014-04-24 18:28:04

标签: php foreach

我目前正在处理一个PHP脚本,并坚持到这一部分。我有一个数据库表,我想显示每行的信息。我有两个下拉菜单,我想要使用不同的网址具有完全相同的名称。我假设这是可能的,而且我做错了,因为我不是那么先进的PHP。

我发现这个问题很相似,但似乎没有看到任何有用的问题。

Use same foreach multiple times

这是我目前拥有的

返回页首

<?php
require("common.php"); 

if(empty($_SESSION['user'])) 
{ 
    header("Location: login.php"); 
    die("Redirecting to login.php"); 
} 

$header = "SELECT id, location FROM table";

try 
{ 
    $headerstmt = $db->prepare($header); 
    $headerstmt->execute();
} 

catch(PDOException $ex) 
{ 
    die("Failed to run query: " . $ex->getMessage()); 
}
?>

然后这是带有foreach循环的部分

<ul class="nav navbar-nav">
<li class="dropdown <?php if ($page == 'view') {echo 'active';} ?>">
    <a class="dropdown-toggle" data-toggle="dropdown" href="#">View <b class="caret"></b></a>
    <ul class="dropdown-menu">
        <?php foreach ($headerstmt->fetchAll() as $hrow) { ?>
        <li><a href="view.php?id=<?php echo $hrow['id'] ?>"><?php echo $hrow['location']; ?></a></li>
        <?php } ?>
    </ul>
</li>
<li class="dropdown <?php if ($page == 'edit') {echo 'active';} ?>">
    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Edit <b class="caret"></b></a>
    <ul class="dropdown-menu">
        <?php foreach ($headerstmt->fetchAll() as $hrow) { ?>
        <li><a href="edit.php?id=<?php echo $hrow['id'] ?>"><?php echo $hrow['location']; ?></a></li>
        <?php } ?>                        
    </ul>
</li>
</ul>

第一个foreach循环正常工作,但第二个是空白。

如果有人能提供帮助,请提前致谢。

1 个答案:

答案 0 :(得分:3)

您应该将$headerstmt->fetchAll()的结果存储在变量中,然后将结果变量用于foreach循环。

$results = $headerstmt->fetchAll();
foreach( $results as $row ) {

}
foreach( $results as $row ) {

}
foreach( $results as $row ) {

}