使用PHP循环数据的最有效方法

时间:2012-10-03 14:46:02

标签: php loops

我目前正在重构网站,我遇到了一组看起来相同但有一些不同变量/文字的链接。

我理解循环和所有内容,这绝对是我们所需要的,但我不确定如何最好地处理各种变化的数据。

HTML如下:

<div class="featuredSide" style="border-color:#fff">
    <h3 style="font-size: 20px; margin-bottom: 12px;">$sectionName</h3>
    <img src="images/$imageName.jpg" width="50" height="60" style="float: left; margin: 4px 8px 16px 0px; border: 2px solid #fff;" />
    <h4 style="font-size: 11px;">$author</h4>
    <p class="lineAboveCol" style="clear: both; margin-bottom: 0px;"><a href="resources.php?section=$section">Click here for more information</a></p>
</div>

我已经放入了变量来替换将要更改的数据(这些数据目前都是用HTML完成的)。

那么循环使用这些数据的最佳方法是什么,我想过使用简单的数组,但我不认为从长远来看这很容易维护。是否有一个我缺少的简单解决方案,或者甚至值得在MySQL表中设置这些数据并直接从那里拉出来?

感谢。

3 个答案:

答案 0 :(得分:0)

可以这样做..

<?php
$theVars[0]['sectionName'] = "section name 1";
$theVars[0]['section'] = "section 1";
$theVars[0]['author'] = "author 1";
$theVars[1]['sectionName'] = "section name 2";
$theVars[1]['section'] = "section 2";
$theVars[1]['author'] = "author 2";
$theVars[2]['sectionName'] = "section name 3";
$theVars[2]['section'] = "section 3";
$theVars[2]['author'] = "author 3";

$htmlStr = "";    

for($i=0;$i<=2;$i++){
    $htmlStr .= '<div class="featuredSide" style="border-color:#fff">
                 <h3 style="font-size: 20px; margin-bottom: 12px;">'.$theVars[$i]['sectionName'].'</h3>
                 <img src="images/$imageName.jpg" width="50" height="60" style="float: left; margin: 4px 8px 16px 0px; border: 2px solid #fff;" />
                 <h4 style="font-size: 11px;">'.$theVars[$i]['author'].'</h4>
                 <p class="lineAboveCol" style="clear: both; margin-bottom: 0px;"><a href="resources.php?section='.$theVars[$i]['section'].'">Click here for more information</a></p>
                 </div>';
}

echo $htmlStr;

?>

我在球场吗?

答案 1 :(得分:0)

我从数组开始:

$links = array(
    'section1' => array(
        'section'    => '...',
        'sectioName' => '...',
        'imageName'  => '...',
        'author'     => '...',
    //    'text' => 'Click here for more information',
    ),
);

然后我会跑一个循环。它易于适应,您可以保留不同的表示和数据,并且您可以在将来将其移动到MySQL或其他持久层,可能提供后端接口以允许维护人员编辑部分。

如果需要部分之间的某些变化,您可以将它们拉入数组的键(或MySQL中的列)。

您还可以从外部提供HTML并运行特殊标记的preg_replace,例如{{ author }}的内容替换为$currentSection['author'],依此类推。这也很容易移植到任何模板引擎。

答案 2 :(得分:0)

我会使用php数组来处理这个特殊的事情但是将数组放在不同的文件中以便于更新/上传

我使用的代码类似于

<强> section.values.php

$sections = array(
    'Section 1' => 'Author 1',
    'Section 2' => 'Author 2',
);

然后在html / php页面上:

<?php
    include("section.values.php"); //or any file name

    foreach($sections as $sectionName => $author){
        echo '<div class="featuredSide" style="border-color:#fff">
            <h3 style="font-size: 20px; margin-bottom: 12px;">' . $sectionName . '</h3>
            <img src="images/$imageName.jpg" width="50" height="60" style="float: left; margin: 4px 8px 16px 0px; border: 2px solid #fff;" />
            <h4 style="font-size: 11px;">' . $author . '</h4>
            <p class="lineAboveCol" style="clear: both; margin-bottom: 0px;"><a href="resources.php?section=' . $section . '">Click here for more information</a></p>
            </div>';
    }
?>