代码之家  ›  专栏  ›  技术社区  ›  Tanner Ottinger

显示文件的多行,从不重复

  •  3
  • Tanner Ottinger  · 技术社区  · 15 年前

    我需要,每十行,在一个分区回音。

    例子:

    <div class='return-ed' id='1'>
    line 1
    line 2
    ...
    line 9
    line 10
    </div>
    
    <!-- next group of lines -->
    
    <div class='return-ed' id='2'>
    line 11
    line 12
    ...
    line 19
    line 20
    </div>
    

    有人知道怎么做吗?

    数组来自file(),所以它的行来自一个文件。

    4 回复  |  直到 12 年前
        1
  •  3
  •   aksu    12 年前

    这应该有效:

    $blocks = array_chunk(file('path/to/file'), 10);
    foreach($blocks as $number => $block) {
        printf('<div id="%d">%s</div>', 
                $number+1, 
                implode('<br/>', $block));
    }
    

    参考文献:

        2
  •  1
  •   webbiedave    15 年前
    echo '<div class="return-ed" id="1">';
    $lineNum = 0;
    foreach ($lines as $line) {
        if ($lineNum && !($lineNum % 10)) {
            echo '</div><div class="return-ed" id="'.($lineNum/10+1).'">';
        }
        echo $line."<br />";
        $lineNum++;
    }
    echo "</div>";
    
        3
  •  0
  •   Ryan Ternier    15 年前

    通过快速的谷歌搜索:

    http://www.w3schools.com/php/php_file.asp

    逐行读取文件

    fgets()函数用于从文件中读取单行。

    注意:调用此函数后,文件指针移到下一行。

    W3学校的例子:

    下面的例子

    逐行读取文件,直到到达文件结尾:

    <?php
    $file = fopen("welcome.txt", "r") or exit("Unable to open file!");
    //Output a line of the file until the end is reached
    while(!feof($file))
      {
      echo fgets($file). "<br />";
      }
    fclose($file);
    ?>
    

    您所需要做的就是让您的计数变量在while循环中最多计数10个。一旦达到10,做你需要做的。

        4
  •  0
  •   Tim Lytle    15 年前

    假设你的行在一个你正在回响的数组中,类似这样的操作就可以了:

    $count = 0;
    $div = 1;
    foreach($lines as $line){ //or a for loop, whatever you're using
      if(0 == $count){
        echo "<div id='$div'>";
      }
    
      $count++;
      echo $line;
    
      if(10 == $count){
        echo "</div>";
        $count = 0;
      }
    }