(有人問之前......我不能使用MySQL數據庫爲這個項目)PHP - 創建UL嵌套列出了從Flatfile文件
使用PHP,我需要創建嵌套UL的從平面文件數據庫。我遇到的問題是我不想顯示重複項目。我可以進一步解釋,但如果你看看下面的代碼,你會看到數據和目標。謝謝。
FLATFILE DATA:
section|category|service Section One|Category One| Section One|Category Two|SC1 Section One|Category Two|SC2 Section One|Category Two|SC3 Section One|Category Two|SC4 Section One|Category Three| Section Two|Category Four|SC5 Section Two|Category Four|SC6 Section Three|Category Five|SC7
HTML目標產量:
<ul class="section">
<li>Section One
<ul class="category">
<li>Category One</li>
<!-- no service -->
</ul> <!-- /category -->
<ul class="category">
<li>Category Two</li>
<ul class="service">
<li>SC1</li>
<li>SC2</li>
<li>SC3</li>
<li>SC4</li>
</ul> <!-- /service -->
</li>
</ul> <!-- /category -->
<ul class="category">
<li>Category Three</li>
<!-- no service -->
</ul> <!-- /category -->
</li>
</ul> <!-- /section -->
<ul class="section">
<li>Section Two
<ul class="category">
<li>Category Four</li>
<ul class="service">
<li>SC5</li>
<li>SC6</li>
</ul> <!-- /service -->
</li>
</ul> <!-- /category -->
</li>
</ul> <!-- /section -->
<ul class="section">
<li>Section Three
<ul class="category">
<li>Category Five</li>
<ul class="service">
<li>SC7</li>
</ul> <!-- /service -->
</li>
</ul> <!-- /category -->
</li>
</ul> <!-- /section -->
我的第一次嘗試。考慮到我需要首先檢查「一節「存在,然後將當前」部分「分配給」section_last「以比較下一個」部分「與當前的「部分」值...並且如果不是,則打印「部分」...然後進入該類別。 我沒有對「服務」值部分進行編碼,因爲我沒有對&類別值取得任何成功。似乎我遇到了背後的'邏輯'問題,或者可能存在將循環中的過去值與PHP提供的下一個值進行比較的方法。
在看到@Kyle S的示例代碼後,我可能會在完全不正確的路徑上對此進行編碼。
<?php
$section = '';
$category = '';
$service = '';
$section_last = '';
$category_last = '';
$service_last = '';
$x = 0;
$file = fopen("categories_data.txt", "r");
if (!$file) { echo 'ERROR: Unable to open file: <strong>'.$file.'</strong>'; }
fgets($file); // IGNORE FIRST LINE IN FLATFILE - column names
while (!feof($file)) {
$lines = fgets($file);
$ele = explode('|', $lines);
$section = $ele[0];
$category = $ele[1];
$service = $ele[2];
$service = str_replace(array("\n", "\r", "\r\n", "\n\r"), '',$service);
if(strlen($section)>0) {
if(!($section == $section_last)) {
echo '
<ul>
<li>'.$section;
$section_last = $section;
$x++;
}
}
echo '
<ul><li>'.$category.' > '.$service.'</li></ul>
';
if($x) {
if($section != $section_last) {
echo '
</li>
</ul>
';
}
}
} // end $data_file WHILE
fclose($file);
?>
您可以加入你寫的問題代碼,請?你有什麼嘗試,爲什麼它沒有工作? – andrewsi