【问题标题】:PHP CodeIgniter - How to count images inside folders and their respective subfoldersPHP CodeIgniter - 如何计算文件夹及其各自子文件夹中的图像
【发布时间】:2017-02-05 13:40:37
【问题描述】:

如何计算我们文件夹和子文件夹中的图片总数?

我认为这是我的观点。好吧,作为 MVC 方式,这可能看起来很糟糕。我知道如何将其放入模型中,但不知道如何使用控制器和视图调用它

<?php
$img = count(glob("./assets/images/*.*"));
$about = count(glob("./assets/images/aboutus/*.*"));
$blog1 = count(glob("./assets/images/blog/*.*"));
$mason = count(glob("./assets/images/blog/masonary/*.*"));
$tl = count(glob("./assets/images/blog/timeline/*.*"));
$blog2 = count(glob("./assets/images/blogdetails/*.*"));
$gallery = count(glob("./assets/images/gallery/*.*"));
$home = count(glob("./assets/images/home/*.*"));
$home2 = count(glob("./assets/images/home/slider/*.*"));
$ico = count(glob("./assets/images/ico/*.*"));
$lb = count(glob("./assets/images/lightbox/*.*"));
$keg = count(glob("./assets/images/kegiatan/*.*"));
$port1 = count(glob("./assets/images/portfolio/*.*"));
$port2 = count(glob("./assets/images/portfolio-details/*.*"));
$leader = count(glob("./assets/images/leaders/*.*"));
$srv = count(glob("./assets/images/services/*.*"));
$usr = count(glob("./assets/images/users/*.*"));
$count = $img+$about+$blog1+$mason+$tl+$blog2+$gallery+$home+$home2+$ico+$lb+$keg+$port1+$port2+$leader+$srv+$usr;
?>

输出:

<div class="col-sm-3 text-center wow bounceIn" data-wow-duration="1000ms" data-wow-delay="300ms">
  <h1 class="timer bold" data-to="<?= $count;?>" data-speed="3000" data-from="0"></h1> 
    <h3>Total Images</h3>
 </div>

有没有办法让这件事变得简单?

【问题讨论】:

  • 您需要在模型中并通过控制器在视图中调用的 PHP 代码。对吗?

标签: php codeigniter


【解决方案1】:

请看 https://stackoverflow.com/a/10895775/7089527

您可以使用 [RecursiveDirectoryIterator][1] 来执行此操作

<?php
function scan_dir($path){
  $ite=new RecursiveDirectoryIterator($path);

  $bytestotal=0;
  $nbfiles=0;
  foreach (new RecursiveIteratorIterator($ite) as $filename=>$cur) {
      $filesize=$cur->getSize();
      $bytestotal+=$filesize;
      $nbfiles++;
      $files[] = $filename;
  }

  $bytestotal=number_format($bytestotal);

  return array('total_files'=>$nbfiles,
'total_size'=>$bytestotal,'files'=>$files);
   }

$files = scan_dir('./');

echo "Total: {$files['total_files']} files, {$files['total_size']} >bytes\n";
//Total: 1195 files, 357,374,878 bytes 
?>

[1]:http://php.net/manual/en/class.recursivedirectoryiterator.php

希望对你有帮助

【讨论】:

    【解决方案2】:

    从控制器调用模型中的方法的格式。

    模型文件:

    application/models/Photo_shoot_model.php
    
    
    class Photo_shoot_model extends CI_Model {
    
    public function image_count() {
    
    $img = count(glob("./assets/images/*.*"));
    $about = count(glob("./assets/images/aboutus/*.*"));
    $blog1 = count(glob("./assets/images/blog/*.*"));
    $mason = count(glob("./assets/images/blog/masonary/*.*"));
    $tl = count(glob("./assets/images/blog/timeline/*.*"));
    $blog2 = count(glob("./assets/images/blogdetails/*.*"));
    $gallery = count(glob("./assets/images/gallery/*.*"));
    $home = count(glob("./assets/images/home/*.*"));
    $home2 = count(glob("./assets/images/home/slider/*.*"));
    $ico = count(glob("./assets/images/ico/*.*"));
    $lb = count(glob("./assets/images/lightbox/*.*"));
    $keg = count(glob("./assets/images/kegiatan/*.*"));
    $port1 = count(glob("./assets/images/portfolio/*.*"));
    $port2 = count(glob("./assets/images/portfolio-details/*.*"));
    $leader = count(glob("./assets/images/leaders/*.*"));
    $srv = count(glob("./assets/images/services/*.*"));
    $usr = count(glob("./assets/images/users/*.*"));
    $count = $img+$about+$blog1+$mason+$tl+$blog2+$gallery+$home+$home2+$ico+$lb+$keg+$port1+$port2+$leader+$srv+$usr;
    
    return $count;
    
    }
    
    }
    

    在控制器中:

    public function index() {
    
    // load model
    $this->load->model('photo_shoot_model');
    
    // call method
    $howManyImages = $this->photo_shoot_model->image_count()
    
    }
    

    关于模型:https://codeigniter.com/user_guide/general/models.html

    但实际上,我会使用 @MayurVirkar 提到的 RecursiveDirectoryIterator。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      • 2012-11-06
      • 1970-01-01
      • 2016-07-24
      相关资源
      最近更新 更多