如何将这个PHP代码完全循环六次?

时间:2014-02-25 18:20:56

标签: php html arrays loops

好的,这是我的代码:

    <?php if (!empty($projectSectorItem1Title)): ?>
    <div class="project" style="overflow:hidden;">
        <?php if (!empty($projectSectorItem1Image)) { ?>
        <img src="<?php echo $projectSectorItem1Image; ?>" width="100%"/>
        <div class="project_box_info">
            <h3><a><?php echo $projectSectorItem1Title; ?></a></h3>
            <p><?php echo $projectSectorItem1Description; ?></p>
        </div>
        <?php } else { ?>
        <div class="project_box_info" style="opacity:1;">
            <h3><a><?php echo $projectSectorItem1Title; ?></a></h3>
            <p><?php echo $projectSectorItem1Description; ?></p>
        </div>
        <?php } ?>
    </div>
    <?php endif; ?>

此代码目前在我的.php文件中重复六次,因为我最多有六个项目。如果第一个if语句返回false,则自然不会出现任何内容。这很好。有用。但是,我注意到我的页面加载速度较慢,其中六个堆叠在一起。

有没有办法系统地循环每个数字的确切代码?唯一需要改变的是数字..即#1以上,第二#2,第三#2等。包含需要增加的数字的行是:1,3,4,6,7,11,12。所以有7个地方。我不知道怎么做!

我在同一个.php文件中也有类似的问题,但如果我知道如何做这个,我应该能够像他们所说的那样“一举两得”。非常感谢您的帮助。

为了澄清我正在尝试为其中一个评论者做的事情:我有六个框与每个框内每个项目的元数据相关联。如果填写了title变量,我们继续使用其余的代码。但是,如果没有图像,则没有“悬停”功能;相反,悬停框的不透明度已经填充(因此不透明度:1;在第二位)。

所以...检查标题&gt;如果标题存在,请继续&gt;如果是图像,则按正常方式进行,但如果不是>在没有图像的情况下正常进行,并为project_box_info

将不透明度设置为1

我真的只是用英语重复这里的代码,但这就是我能做的全部!

3 个答案:

答案 0 :(得分:1)

你会使用for循环;

<?
for (int i = 0; i < 6; i++) {
    // your code here
}

这将循环上述语句6次。如果你想改变一个数字,你可以替换为i - (或i + 1);

<?
for (int i = 0; i < 3; i++) {
    echo("this is cycle number $i");
}

会回来; 这是第0周期 这是第1周期 这是第2周期

答案 1 :(得分:1)

你可以使用如下的for循环

<?php for($i=1;$i<=6;$i++): ?>
<?php if (!empty(${"projectSectorItem{$i}Title"})): ?>
<div class="project" style="overflow:hidden;">
    <?php if (!empty(${"projectSectorItem{$i}Image"})) { ?>
    <img src="<?php echo ${"projectSectorItem{$i}Image"}; ?>" width="100%"/>
    <div class="project_box_info">
        <h3><a><?php echo ${"projectSectorItem{$i}Title"}; ?></a></h3>
        <p><?php echo ${"projectSectorItem{$i}Description"}; ?></p>
    </div>
    <?php } else { ?>
    <div class="project_box_info" style="opacity:1;">
        <h3><a><?php echo ${"projectSectorItem{$i}Title"}; ?></a></h3>
        <p><?php echo ${"projectSectorItem{$i}Description"}; ?></p>
    </div>
    <?php } ?>
</div>
<?php endif; ?>
<?php endfor; ?>

这是你的循环..随意问任何问题。

答案 2 :(得分:0)

我相信你正在寻找这些方面的东西。

具有设置标题,描述和图像URL的项目数组应该可以大大提高执行速度。然后,正如其他人所建议的那样,使用forforeach循环遍历数组。

使用此方法可以更好地将数据与演示文稿分开,从而使整个内容更易于阅读和修改。

$items = array(
    array(
        'title' => 'Item 1',
        'description' => 'This is the description for item1',
        'image' => 'http://fake.com/images/item1.png'
    ),
    array(
        'title' => 'Item 2',
        'description' => 'This is the description for item2',
        'image' => 'http://fake.com/images/item2.png'
    ),
    array(
        'title' => 'Item 3',
        'description' => 'This is the description for item3'
    ),
    array(
        'title' => 'Item 4',
        'description' => 'This is the description for item4',
        'image' => 'http://fake.com/images/item4.png'
    ),
    array(
        'title' => 'Item 5',
        'description' => 'This is the description for item5',
        'image' => 'http://fake.com/images/item5.png'
    ),
    array(
        'title' => 'Item 6',
        'description' => 'This is the description for item6'
    )
)

foreach ($items as $item) {
    echo '
    <div class="project">
        ', (isset($item['image']) ? '<img src=' . $item['image'] . '" alt="" />' : ''), '
        <div class="project_box_info">
            <h3><a>', $item['title'], '"</a></h3>
            <p>', $item['description'], '"</p>
        </div>
    </div>';
}

为了便于阅读,我在这里省略了你的内联样式。真的,无论如何他们应该在外部样式表中。