限制按时间排序的总结果后的最大结果

| 在将文件放在目录中并按时间对它们排序之后,我想限制返回的结果。并且,以防万一目录中没有文件,我还要添加一个“ 0”短语。这是到目前为止的代码。
$list = glob(\'items/*.html\');
usort(
   $list,
   create_function(\'$a,$b\', \'return filemtime($a) < filemtime($b);\')
);


foreach($list as $file)
{
    include $file;
}
现在我正在猜测,我可能可以像这样做
if (file_exists())
部分:
foreach($list as $file)
{
 if (file_exists($file)) {
    include $file;}
}
部分不会引发错误,但是在哪里最多可以计数5或7?     
已邀请:
如果目录中没有文件,则glob返回一个空数组。这意味着file_exists将是无用的,就好像您从glob中获得一个值一样,该值将存在。 如果glob某种程度上失败了,它将返回false。如果发生这种情况,您的脚本将引发一些错误。尝试在使用is_array的foreach之前检查数组。     
$limit=5;
$list = glob(\'items/*.html\');
usort(
   $list,
   create_function(\'$a,$b\', \'return filemtime($a) < filemtime($b);\')
);  

$list=array_slice($list, 0, $limit);

foreach($list as $file) {
    include $file;
}
此处实际上不需要执行
file_exists()
查询,因为如果
glob
找到了它,则该查询应该存在。您可能想做一个
is_readable()
,在这种情况下,您可以这样重写它:
$limit=5;
$list = glob(\'items/*.html\');
usort(
   $list,
   create_function(\'$a,$b\', \'return filemtime($a) < filemtime($b);\')
);  

$i=0;    
foreach($list as $file) {
    if ($i < $limit && is_readable($file)) {
         include $file;
         $i++;
    }
}
您可能还想添加检查“ 6”是否由于某种原因而失败。
$list = glob(\'items/*.html\');
if ($list===false) {
    /*handle error (or simply $list=array() if you don\'t care)*/
}
array_slice() is_read()     
尝试(最多包含5个文件)
foreach($list as $k=>$v)
{
  if($k<5 && file_exists($v))
    include_once $file;
  else
      break;

}
    

要回复问题请先登录注册