CodeIgniter在另一个循环之后继续执行foreach循环

时间:2012-04-18 21:54:11

标签: codeigniter

我在以下代码中执行了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">&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>

1 个答案:

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

$ row变量仍然在范围内,它正在查看第一个查询。如果你正在进行内部foreach循环,则不能将“item”变量命名为outter foreach。

更重要的是:

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

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