2012-10-03 72 views
2

我目前正在重構一個網站,並且遇到了一組鏈接,它們看起來都一樣,但有幾個不同的變量/文本。使用PHP循環數據的最有效方式

我理解循環和一切,這絕對是需要的,但我不知道如何處理各種改變的數據。

的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表中,並直接從那裏拉它?

謝謝。

+2

只需創建一個'array('sectionName'=>'author','anotherSectionName'=>'anotherAuthor');'並執行'foreach($ array as $ sectionName => $ author)'**編輯**等待我只注意到那些其他變量 - 但是這個概念是合理的,只創建一個數組數組並訪問子數組的各個鍵。 – DaveRandom

+0

我們可以有更多的信息。比如包含這個的頁面數量。這個div的出現次數等 – Chris

+0

這是一個包含文件,這段代碼在該文件中重複8次。該文件包含在少數幾頁中,可能是9. – 0Neji

回答

0

我會用一個數組開始:

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

,然後我會運行一個循環。它很容易適應,你可以保持獨特的表現和數據,並且你可以將它移動到MySQL或其他持久層,也許提供一個後端接口,允許維護者編輯部分。

如果需要部分之間的一些變化,您可以將它們拖放到數組的鍵(或MySQL中的列)中。

您還可以從外部提供HTML並運行特殊標籤的預置位,例如, {{ author }}被替換爲$currentSection['author']等內容。這也很容易移植到任何模板引擎。

+0

太好了,我認爲這是最優雅的解決方案,易於維護和閱讀。謝謝。 – 0Neji

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; 

?> 

上午我在球場?

0

我會使用PHP數組爲這個特別的事情,但在不同的文件中的數組,所以很容易更新/上傳

我會用會像

節中的代碼。 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>'; 
    } 
?> 
相關問題