Php 将foreach拆分为多页 $files=glob('docs/*.xml'); foreach($files作为$file){ $xml=newsimplexmlement($file,0,true); 回声' “.$xml->doctype” “.$xml->date” * * * * * '; }
上面的代码是一个循环,它向我显示docs文件夹中的所有文件。 我希望在一个页面中只包含10个xml文件,并将每个页面拆分为10个文件。Php 将foreach拆分为多页 $files=glob('docs/*.xml'); foreach($files作为$file){ $xml=newsimplexmlement($file,0,true); 回声' “.$xml->doctype” “.$xml->date” * * * * * '; },php,xml,Php,Xml,上面的代码是一个循环,它向我显示docs文件夹中的所有文件。 我希望在一个页面中只包含10个xml文件,并将每个页面拆分为10个文件。 如何执行此操作?您可以使用以下方法之一拆分$files数组,这两种方法都需要设置$page变量,该变量将是一个整数,显示要查看的10个xml文件页 $files = glob('docs/*.xml'); foreach($files as $file){ $xml = new SimpleXMLElement($file, 0, true); echo'
如何执行此操作?您可以使用以下方法之一拆分$files数组,这两种方法都需要设置$page变量,该变量将是一个整数,显示要查看的10个xml文件页
$files = glob('docs/*.xml');
foreach($files as $file){
$xml = new SimpleXMLElement($file, 0, true);
echo'
<tr>
<td>' . $xml->doctype . '</td>
<td><a href="viewdoc.php?docname=' . basename($file, '.xml') . '&username='. $xml->startedby .'&myname='. $_SESSION['username'] .'">' . basename($file, '.xml') . '</a></td>
<td><a href="viewprofile.php?name='. $xml->startedby .'">'. $xml->startedby .'</a></td>
<td>'. $xml->date .'</td>
<td>* * * * *</td>
<td></td>
</tr>
';
}
//这将使文件成为10个元素的数组
$files=glob('docs/*.xml');
$files=array_chunk($files,10);
foreach($files[$page-1]作为$file){
$xml=newsimplexmlement($file,0,true);
回声'
“.$xml->doctype”
“.$xml->date”
* * * * *
';
}
或者,您可以使用数组切片来获取所需的10
// this will make files an array for 10 element
$files = glob('docs/*.xml');
$files = array_chunk($files, 10);
foreach($files[$page-1] as $file){
$xml = new SimpleXMLElement($file, 0, true);
echo'
<tr>
<td>' . $xml->doctype . '</td>
<td><a href="viewdoc.php?docname=' . basename($file, '.xml') . '&username='. $xml->startedby .'&myname='. $_SESSION['username'] .'">' . basename($file, '.xml') . '</a></td>
<td><a href="viewprofile.php?name='. $xml->startedby .'">'. $xml->startedby .'</a></td>
<td>'. $xml->date .'</td>
<td>* * * * *</td>
<td></td>
</tr>
';
}
$files=glob('docs/*.xml');
$files=array_slice($files,($page-1)*10,10);
foreach($files作为$file){
$xml=newsimplexmlement($file,0,true);
回声'
“.$xml->doctype”
“.$xml->date”
* * * * *
';
}
您可以使用以下方法之一拆分$files数组,这两种方法都需要设置$page变量,该变量将是一个整数,显示要查看的10个xml文件页
$files = glob('docs/*.xml');
foreach($files as $file){
$xml = new SimpleXMLElement($file, 0, true);
echo'
<tr>
<td>' . $xml->doctype . '</td>
<td><a href="viewdoc.php?docname=' . basename($file, '.xml') . '&username='. $xml->startedby .'&myname='. $_SESSION['username'] .'">' . basename($file, '.xml') . '</a></td>
<td><a href="viewprofile.php?name='. $xml->startedby .'">'. $xml->startedby .'</a></td>
<td>'. $xml->date .'</td>
<td>* * * * *</td>
<td></td>
</tr>
';
}
//这将使文件成为10个元素的数组
$files=glob('docs/*.xml');
$files=array_chunk($files,10);
foreach($files[$page-1]作为$file){
$xml=newsimplexmlement($file,0,true);
回声'
“.$xml->doctype”
“.$xml->date”
* * * * *
';
}
或者,您可以使用数组切片来获取所需的10
// this will make files an array for 10 element
$files = glob('docs/*.xml');
$files = array_chunk($files, 10);
foreach($files[$page-1] as $file){
$xml = new SimpleXMLElement($file, 0, true);
echo'
<tr>
<td>' . $xml->doctype . '</td>
<td><a href="viewdoc.php?docname=' . basename($file, '.xml') . '&username='. $xml->startedby .'&myname='. $_SESSION['username'] .'">' . basename($file, '.xml') . '</a></td>
<td><a href="viewprofile.php?name='. $xml->startedby .'">'. $xml->startedby .'</a></td>
<td>'. $xml->date .'</td>
<td>* * * * *</td>
<td></td>
</tr>
';
}
$files=glob('docs/*.xml');
$files=array_slice($files,($page-1)*10,10);
foreach($files作为$file){
$xml=newsimplexmlement($file,0,true);
回声'
“.$xml->doctype”
“.$xml->date”
* * * * *
';
}
您应该更多地使用PHP中的迭代器来划分作业:
$files = glob('docs/*.xml');
$files = array_slice($files, ($page-1)*10, 10);
foreach ($files as $file){
$xml = new SimpleXMLElement($file, 0, true);
echo'
<tr>
<td>' . $xml->doctype . '</td>
<td><a href="viewdoc.php?docname=' . basename($file, '.xml') . '&username='. $xml->startedby .'&myname='. $_SESSION['username'] .'">' . basename($file, '.xml') . '</a></td>
<td><a href="viewprofile.php?name='. $xml->startedby .'">'. $xml->startedby .'</a></td>
<td>'. $xml->date .'</td>
<td>* * * * *</td>
<td></td>
</tr>
';
}
那么这是如何工作的呢?首先,通过使用预定义的名称,您可能已经看到了它的功能。但它不是像glob()
那样返回数组,而是一个迭代器
这在这里特别适用于允许与其他迭代器堆叠。例如,下一个是具体的,因此您需要将当前用于筛选决策的代码移动到此迭代器中。PHP手册中记录了它的工作原理
然后,使用函数获得所有过滤文件的计数,该函数随后与LimitPagination
对象一起使用,该对象将分页完全封装到它自己的对象中。有关详细信息,请参阅my
它通过$pagination->getLimitIterator($filtered)
提供另一个迭代器,以便提供指定页面内的那些过滤文件($\u GET['page']
,在上面的示例中)。它还提供了一个页面列表,以便您可以将链接输出到其他页面
那么,我们在这里做了什么:
simplexmlement
的一个特殊子级,该子级还包含获取doctype的算法,并且知道文件路径。给它一个独特的接口将有助于过滤器迭代器
另外,由于涉及分页,缓存过滤器迭代器是有意义的,这样计数操作的权重就不会太大
这里迭代器的优点显然是代码重用,例如,LimitPagination
对象只适用于任何类型的分页,您可以以迭代器的形式为这些分页提供数据
如果你想坚持使用数组,你需要把它变成一个
ArrayPagination
对象,而不是过滤器迭代器,你可以使用一个回调函数来过滤你的文件。如果您使用数组进行原型设计,还有ArrayIterator
,因此您可以从数组切换到迭代器(还有CallbackFilterIterator
,它还可以让您重复使用数组过滤函数)。您应该更多地使用PHP中的迭代器来划分作业,甚至:
$files = glob('docs/*.xml');
$files = array_slice($files, ($page-1)*10, 10);
foreach ($files as $file){
$xml = new SimpleXMLElement($file, 0, true);
echo'
<tr>
<td>' . $xml->doctype . '</td>
<td><a href="viewdoc.php?docname=' . basename($file, '.xml') . '&username='. $xml->startedby .'&myname='. $_SESSION['username'] .'">' . basename($file, '.xml') . '</a></td>
<td><a href="viewprofile.php?name='. $xml->startedby .'">'. $xml->startedby .'</a></td>
<td>'. $xml->date .'</td>
<td>* * * * *</td>
<td></td>
</tr>
';
}
那么这是如何工作的呢?首先,通过使用预定义的名称,您可能已经看到了它的功能。但它不是像glob()
那样返回数组,而是一个迭代器
这在这里特别适用于允许与其他迭代器堆叠。例如,下一个是具体的,因此您需要将当前用于筛选决策的代码移动到此迭代器中。PHP手册中记录了它的工作原理
然后,使用函数获得所有过滤文件的计数,该函数随后与LimitPagination
对象一起使用,该对象将分页完全封装到它自己的对象中。有关详细信息,请参阅my
它通过$pagination->getLimitIterator($filtered)
提供另一个迭代器,以便提供指定页面内的那些过滤文件($\u GET['page']
,在上面的示例中)。它还提供了一个页面列表,以便您可以将链接输出到其他页面
那么,我们在这里做了什么: