2

これが単純な質問である可能性がある場合は、お詫び申し上げます。これまでフラットファイルデータベースを使用したことがなく、これは非常に直感的ではありません。

フラットファイル、タブ\t\n改行区切りのデータベースがあります。

Sebastian Ingrosso  Kidsos (Wippenberg Mix) 2F32829628  Electro
Avicii  Silhouettes 2F47987574 House

(サンプル用に2行)。各行を繰り返し処理し、タグ\t内のタブ文字で区切られた各要素をカプセル化spanしてから、次の行に移動できるようにします。できれば、要素内の新しい各行をカプセル化し<li>ます。

私はこれを最初に持っていますが、スパンや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>

4

1 に答える 1

1

あなたのデータが私のものに似ていると仮定すると$data、それはあなたが望むものを与えるように見えます。

$data = "Sebastian\tIngrosso\tKidsos (Wippenberg Mix)\t2F32829628\tElectro\nAvicii\tSilhouettes\t2F47987574\tHouse";
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>
于 2013-02-15T22:36:09.443 に答える