如何将两个条件组合到foreach循环上,这样它就不会相互重叠?

时间:2017-03-12 08:42:09

标签: php html cakephp cakephp-3.0

这两行代码专门 - ($ teamproject as $ teamproject)和($ cattypes as $ teamproject)。基本上它是一个显示catergory(cattypes)和主图像以及特定图像卡标题的图像卡。

<div class="container" id="projectcards">
    <div class="row">
     <?php     

if(!empty($error)){
        echo $error;
        }
 if (!empty($teamproject)) {  
 foreach ($teamproject as $teamproject): ?>

        <a href="/project-single/1" class="col-md-6 col-sm-6 col-xs-12 thumbnailx">
            <?php foreach ($cattypes as $teamproject): ?>
            <h4 class="post-content"><?=  h($teamproject->cattype_title)?></h4>
            <?php endforeach; ?>
            <img src="<?=  h($teamproject->mainimg)?>">
            <h3><?=  h($teamproject->title)?></h3>
        </a>

     <?php 
    endforeach; 
        } 
    ?>

    </div>

</div>

2 个答案:

答案 0 :(得分:1)

你误解了foreach如何在PHP中运行。第一个项应该是一个数组的名称,它将迭代,第二个项目应该是你想要调用每个项目。这句话:

foreach ($teamproject as $teamproject):

不应该两次列出相同的变量。

如果它只是一个实体,请不要迭代它,只需直接访问它的值。

如果它是一个包含teamproject实体列表的数组,那么只需为该项指定foreach循环的唯一名称:

foreach ($teamproject as $project)

第二个嵌套的foreach-如果这应该是每个特定团队项目的标题列表,那么它可能应该是单个$ project实体中的列表?正如您所写的那样,它只是迭代$ cattypes数组,并且在每次迭代时,一遍又一遍地打印相同的$ project标题。

如果cattypes应该是每个$项目的列表,那么它的含义模糊不清:

foreach($project->cattypes as $cattype)

更换&#34; cattypes&#34;在您的teamproject实体上实际调用了该列表。

答案 1 :(得分:0)

我不得不添加foreach条件,而是必须添加IF条件才能使其正常工作。

<div class="container" id="projectcards">
    <div class="row">
        <?php     
        if (!empty($teamproject)) {  
        foreach ($teamproject as $team): ?>

        <a href="/projects-single/<?=  h($team->id)?>" class="col-md-6 col-sm-6 col-xs-12 thumbnailx">
            <?php foreach ($cattypes as $cattype): 
                if ($team->cattype_id == $cattype->id ) {                            
                ?>
                <h4 class="post-content"><?=  h($cattype->title)?></h4>
                <?php  
            }  endforeach; ?>

            <img src="<?=  h($team->mainimg)?>">
            <h3><?=  h($team->title)?></h3>
        </a>
        <?php 
        endforeach; 
    } 
    ?>
</div>