0

我在以下代码中执行了 2 个单独的 foreach 循环。最后,在第二个 foreach 循环之后,我有 $row->websiteURL 输出。问题是 $row->websiteURL 是第一个循环的一部分。因此,当我运行代码时出现以下错误:

遇到 PHP 错误

严重性:通知

消息:未定义的属性:stdClass::$websiteURL

文件名:views/projects.php

行号:135

" 目标="_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">&nbsp;</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>&nbsp;</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>
4

1 回答 1

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>&nbsp;</td>

$row 变量仍在范围内,它正在第一个查询中查找。如果您正在执行内部 foreach 循环,则不能将“item”变量命名为与外部 foreach 相同。

更重要的是:

foreach($arr as $row):
   foreach($arr as $row2):
      //do something
   endforeach;
 endforeach;

回到更大的问题。您不应该在视图中查询数据。数据在模型中进行操作。控制器加载模型,使用模型获取信息,然后将信息传递给视图。如果您是 MVC 新手,这可能是一个难以掌握的概念。一旦你得到这个工作,专注于将这些查询移动到模型中它们自己的函数中,并以这种方式检索信息。

于 2012-04-18T22:00:42.500 回答