我在以下代码中执行了2个单独的foreach循环。最后,我在第二个foreach循环之后立即输出$ row-> websiteURL。问题是$ row-> websiteURL是第一个循环的一部分。因此,当我运行代码时出现以下错误:
遇到PHP错误
严重性:注意
消息:未定义的属性:stdClass :: $ websiteURL
文件名:views / projects.php
行号:135
“target =”_ blank“>
在第二个foreach完成后,我将如何继续第一个foreach循环?
<table style="width: 41%">
<?php $query = $this->db->query("SELECT * FROM projects ORDER BY idprojects DESC");
foreach ($query->result() as $row) { ?>
<tr>
<td style="height: 15px">
<div class="auto-style2">
<em><span class="auto-style1"><?=$row->projectName?></span></div>
<table cellpadding="5" style="width: 535px; height: 66;">
<tr>
<td class="box1" style="height: 49px; width: 800px;">
<table cellpadding="0" cellspacing="0" style="width: 466px; height: 185px">
<!-- MSTableType="layout" -->
<tr>
<td valign="top" style="width: 225px">
<em>
<table style="width: 100%">
<tr class="box1">
<td class="innerbox" style="height: 88px"><em><span class="text1">Project name</span>:
<span class="underlined-link"><?=$row->projectName?></span><br>
<span class="text1">Description</span>: <?=$row->projectDesc?><br><span class="text1">Start
date</span>: <?=$row->startDate?><br><span class="text1">Finised date</span>:
<?=$row->finishedDate?><br><span class="text1">Created for</span>:
<?=$row->createdFor?><br><span class="text1">Contributers</span>:
<span class="underlined-link"><?=$row->contributors?></span></em></td>
</tr>
</table>
</em></td>
<td style="width: 12px"> </td>
<td valign="top" style="height: 185px; width: 229px">
<em>
<?php $query = $this->db->query("SELECT * FROM screenshots ORDER BY idscreenshot DESC");
foreach ($query->result() as $row) { ?>
<img alt="" src="<?=$row->screenshotURI?>" width="231" height="187"></em> </td>
</tr>
<?php } ?>
</table>
<br>
<a style="text-decoration:none" href="<?=$row->websiteURL?>" target="_blank"><div class="link1">
View This Product</div></a>
</td>
</tr>
</table>
</em></td>
</tr>
<?php } ?>
</table>
答案 0 :(得分:1)
您需要在第二个foreach中更改变量,如下所示:
$query = $this->db->query("SELECT * FROM screenshots ORDER BY idscreenshot DESC");
foreach ($query->result() as $row2) { ?>
<img alt="" src="<?=$row2->screenshotURI?>" width="231" height="187"></em> </td>
$ row变量仍然在范围内,它正在查看第一个查询。如果你正在进行内部foreach循环,则不能将“item”变量命名为outter foreach。
更重要的是:
foreach($arr as $row):
foreach($arr as $row2):
//do something
endforeach;
endforeach;
回到更大的问题。您不应该在视图中查询数据。数据在模型中被操纵。控制器加载模型,使用模型获取信息,然后将信息传递给视图。如果您是MVC的新手,可能难以掌握这个概念。一旦完成这项工作,请专注于将这些查询移动到模型中的自己的函数中,并以这种方式检索信息。