【问题标题】:Displaying latest 10 images from file directory显示文件目录中最新的 10 张图像
【发布时间】:2015-02-16 19:50:01
【问题描述】:

我正在使用这段 php 从我的目录中提取最新的图像,但我只想显示最新的 10 个上传而不是所有内容。

有人知道如何更改代码以实现此目的吗?谢谢!

<?php
   $files = glob("images/*.*");
   for ($i=1; $i<count($files); $i++){

      $image = $files[$i];
      echo '<img src="'.$image .'" alt="Random image" id="lay"/>';
   }
?>

【问题讨论】:

  • 如何知道“最新”10 是什么,您不检查日期或按日期排序或..
  • 你如何定义“最新”?您是否尝试过从 1 到 10 的排序和和?

标签: php


【解决方案1】:

还有这个使用array_slice():

if($images = array_slice(glob("images/*.*")){
    //sort
    usort($images, create_function('$a,$b', 'return filemtime($a) - filemtime($b);'));
    //loop 10
    foreach (array_slice($images, 0, 10) as $image) {
       echo '<img src="'.$image.'" alt="..."/>';
    }
}

【讨论】:

    【解决方案2】:

    查看项目中使用的一段代码。您可以根据自己的要求进行调整。

    $folder = 'images/';
    $filetype = '*.*';
    $files = glob($folder.$filetype);
    $count = count($files);
    
    $sortedArray = array();
    for ($i = 0; $i < $count; $i++) {
        $sortedArray[date ('YmdHis', filemtime($files[$i]))] = $files[$i];
    }
    
    ksort($sortedArray);
    echo '<table>';
    foreach (array_slice($sortedArray), 0, 10) as &$filename) {
        #echo '<br>' . $filename;
        echo '<tr><td>';
        echo '<a name="'.$filename.'" href="#'.$filename.'"><img src="'.$filename.'" /></a>';
        echo substr($filename,strlen($folder),strpos($filename, '.')-strlen($folder));
        echo '</td></tr>';
    }
    echo '</table>';
    

    如果您想在顶部而不是底部显示最新图像,请更改此行:

    ksort($sortedArray);
    

    到这里:

    krsort($sortedArray);
    

    更新应用限制:

    要应用限制,您可以简单地在 final foreach 下应用计数器或数组切片函数并获取图像顶部。

    【讨论】:

      【解决方案3】:

      我喜欢foreacharray_slice,但这里是替代品:

      array_multisort(array_map('filemtime', $files=glob("images/*.*")), SORT_DESC, $files);
      
      for($i=0; $i<10; $i++) {
          $image = $files[$i];
      }
      

      【讨论】:

        【解决方案4】:
        //Get last 10
        $limit = 10;
        $arr = glob('/dir/dir/*.{jpg,jpeg,JPG,JPEG}', GLOB_NOESCAPE|GLOB_BRACE);
        return array_slice($arr, (count($arr)-$limit), $limit);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-04-02
          • 1970-01-01
          • 2013-02-24
          • 1970-01-01
          • 2011-04-30
          • 2019-12-31
          • 1970-01-01
          相关资源
          最近更新 更多