Php 我可以在foreach循环中多次使用同一对象吗

Php 我可以在foreach循环中多次使用同一对象吗,php,Php,在这里,我写了完整的代码来解释我的问题。已生成链接,但未生成列表。 有什么问题吗?谢谢 require 'database.php'; $query="SELECT subject.subjectName, subject.subjectId FROM course,subject where subject.subjectId=course.subjectId

在这里,我写了完整的代码来解释我的问题。已生成链接,但未生成列表。 有什么问题吗?谢谢
require 'database.php';
$query="SELECT subject.subjectName, subject.subjectId FROM course,subject where subject.subjectId=course.subjectId                                                        
                      and course.memberId=1";
$courses=$db->query($query);
?>
<!doctype html>
<html>
<head>
<title>foreach</title>
</head>
 <body>
<?php foreach ($courses as $course):?>
              <a href="#">
               <?php echo $course['subjectName'];?>
            </a>
             <br>

            <?php endforeach; ?>
    <ul>

     <?php foreach ($courses as $course):?>
              <li>
               <?php echo $course['subjectName'];?>
            </li>
            <?php endforeach; ?>
     </ul>
</body>
</html>
需要“database.php”;
$query=“从课程中选择subject.subjectName,subject.subjectId,subject where subject.subjectId=课程.subjectId
当然,memberId=1”;
$courses=$db->query($query);
?>
弗雷奇


否,foreach不修改对象。您可能正在重写两个foreach块之间的$courses变量

您的第二个代码在结束PHP标记之前有一个引号

以前

<?php foreach($courses as $course):?> <a href"<?php echo $course['courseName'] "?> </li> 
<?php endforeach;?> 

以及更易于阅读的代码

<?php
   foreach($courses as $course) {
      echo '<a href="'.$course['courseName'].'">A Link</a>';
   }
?>

只是不确定在此处键入代码时是否出错,或者您的脚本中是否有完全相同的代码,但请在第二秒内检查每个代码 在这里,href后面缺少“=”应该是这样的
是否缺少

是否检查了页面来源?它可能被css隐藏,因为每个块中都有不同的HTML标记

大家好,我终于找到了问题的答案,这里是:

在我的代码中,$courses是一个PDOstatement对象,foreach循环调用fetch()方法,fetch()方法释放结果集,这意味着在foreach循环结束时不再剩下行。它全部被释放了,所以我们不能在循环中再次使用相同的$courses,因为它里面什么都没有了


希望我没有遗漏任何东西…

小评论,澄清您在这种特殊情况下没有使用对象。了解正确的PHP术语可以帮助这里的其他人解决您的问题。@TomKriek:
foreach
两次不会引起问题,除非
$courses
在第二次迭代时不再在范围内。我怀疑他不是超出了范围,就是
$courses
实际上实现了
ArrayAccess
Iterator
,并把它搞得一团糟。需要更多信息。@TomKriek这不是创建了一个对象吗$课程=$db->query($query);为什么不看一下源代码,确保UL实际上是空的——也许是一些奇怪的CSS行为在隐藏元素you@Barakzai如果您从一开始就包含源代码,那么我们就可以看到实际发生的情况。不,我使用$courses的唯一地方是在foreach循环中,当我制作副本时,它可以完美地工作将$courses设置为$courses1,并在第二个foreach循环中使用它。我没有使用任何CSS。如果我复制$courses并在第二个循环中将其用作$courses1,那么同样的代码也可以工作。。
<?php
   foreach($courses as $course) {
      echo '<a href="'.$course['courseName'].'">A Link</a>';
   }
?>