很抱歉,如果这可能是一个简单的问题,我以前没有使用过平面文件数据库,发现这很不直观。
我有一个平面文件,选项卡t
和n
新行分隔数据库,如下所示:
Sebastian Ingrosso Kidsos (Wippenberg Mix) 2F32829628 Electro
Avicii Silhouettes 2F47987574 House
(两行仅用于示例)。我希望能够遍历每一行,将由t
制表符分隔的每个元素封装在span
标记中,然后转到下一行,最好将每一新行封装在<li>
元素中。
我有这个开始,它不增加跨度或李的:
function display_tracklist($max) {
$db = fopen('db/db.txt', 'r');
$row = 0;
while (($tracks = fgetcsv($db, "n")) !== FALSE) {
if ($max > count($tracks)) {
$max = count($tracks);
}
$row++;
for ($index=0; $index < $max; $index++) {
echo "<li>" . $tracks[$index] . "</li>";
}
}
fclose($db);
}
处理这项任务的最佳方法是什么?通常情况下,我会使用SQL数据库来实现这一点,使事情更加直观,但这不是一个选项。我想到了嵌套的foreach循环等等,到目前为止运气不好。
最终结果应该是:<li><span>Sebastian Ingrosso</span> <span>Kidsos (Wippenberg Mix)</span> <span>2F32829628</span> <span>Electro</span></li>
<li><span>Avicii</span> <span>Silhouettes</span> <span>2F32829628</span> <span>House</span></li>
等等。
假设你的数据与我的$data
相似,那看起来就像是给了你想要的;
$data = "SebastiantIngrossotKidsos (Wippenberg Mix)t2F32829628tElectronAviciitSilhouettest2F47987574tHouse";
foreach ((array) explode("n", $data) as $lines) {
print "<li>";
foreach ((array) explode("t", $lines) as $line) {
print "<span>{$line}</span>";
}
print "</li>n";
}
输出;
<li><span>Sebastian</span><span>Ingrosso</span><span>Kidsos (Wippenberg Mix)</span><span>2F32829628</span><span>Electro</span></li>
<li><span>Avicii</span><span>Silhouettes</span><span>2F47987574</span><span>House</span></li>