0

csvファイルに568行あり、forループは次のようになります

$csv = array();
$file = fopen('names.csv', 'r');

while (($result = fgetcsv($file)) !== false)
{
    $csv[] = $result;
}

fclose($file);

for ($row = 0; $row < 568; $row++)
{
echo "Serial no:<br/>";
echo "Name:".$csv[$row][1]."";
}

このような出力が欲しい...

Serial no: 1
Name: Blah blah 1
Serial no: 2
Name: Blah blah 2
............
............
Serial no: 10
Name: Blah blah 10

10行ごとにシリアル1から10が必要です。10行が終了したら、水平線が必要です。

印刷したいのです

echo "<hr>";

10行ごと。

誰か助けてもらえますか?ありがとう

4

2 に答える 2

2

これはうまくいくはずです:

for ($row = 0; $row < 568; $row++) {
    echo "Serial no:<br/>";
    echo "Name:".$csv[$row][1];
    echo (($row+1)%10 == 0) ? '<hr>' : '<br />';
}

説明 :

  • 「Name」行の最後にある。""は必要ありません。
  • $ row + 1:最初の要素(pos 0)の後に<hr>が出力されないように、$rowの代わりに
  • エコー(状態)?res1:res 2; if(条件)echores1のようなものです。それ以外の場合はres2をエコーし​​ます。

しかし、これを行うための本当の良い方法は次のようになります:

$file = fopen('names.csv', 'r');
$i = 1;

while (($result = fgetcsv($file)) !== false) {
    echo "Serial no:" .$i. "<br/>";
    echo "Name:".$result[1];
    echo ($i == 1) ? '<hr>' : '<br />';
    $i = ($i%10)+1;
}

fclose($file);
于 2012-08-04T17:30:43.413 に答える
0
$csv = array();
$file = fopen('names.csv', 'r');

while (($result = fgetcsv($file)) !== false)
{
    $csv[] = $result;
}

fclose($file);

for ($row = 0; $row < 568; $row++)
{
echo "Serial no:<br/>";
echo "Name:".$csv[$row][1]."";
   if ((int) $row % 10 === 0)
    {
        echo '<hr>';
    } 
}

トリックを行う必要があります:)

于 2012-08-04T17:29:02.160 に答える