好的,我有一本30.000行的数字图书。我想只展示一章的前20行作为预览,每章都有300行。
任何人都知道如何解决这个问题?我尝试了以下方法:
foreach ($lines as $n => $line) {
if ($n >= 0 && $n =< 20) {
echo $line;
}
这将导致显示第一章的前20行。那么我该如何为所有其他行重复这个呢?
显示0-20 显示300-320 显示600-620 显示900-920 等。
提前致谢!
答案 0 :(得分:2)
你可以用:
$rgChapters = [];
$rFile = fopen('/path/to/file', 'r');
$iLines = 20;
$iChapter = 300;
$i = 0;
while($sData = fgets($rFile) && !feof($rFile))
{
if($i % $iChapter < $iLines)
{
$rgChapters[floor($i/$iChapter)].=$sData.PHP_EOL;
}
$i++;
}
fclose($rFile);
- 结果,你将获得一个每300行前20行的数组(或者你可以直接输出数据而不是将它存储在数组中)
答案 1 :(得分:1)
打印第5章
$chapter = 5;
$pages = 20;
$start = $chapter*$pages;
for($i=$start, $c=$start+$pages-1; $i < $c; $i++)
{
echo $lines[$i];
}
答案 2 :(得分:1)
我刚刚在早期的SO问题上找到答案:
foreach ($lines as $n => $line) {
if ($n % 300 > 0 && $n % 100 <= 20) {
echo $line; // or whatever
}
}
根据Michael Berkowski撰写的答案(PHP read in every 10 out of 100 lines)