3

このスクリプトは、ディレクトリ 'uploads' をスキャンし、そのサブフォルダーを一覧表示します。すべてのサブフォルダーはこの構造を持っています

YYYY-MM-DD_hh:mm:ss_text

例えば

  • 2013-03-18_23:59:59_cam1
  • 2013-03-18_09:22:12_cam1
  • 2013-03-17_19:05:02_cam2
  • 2013-03-17_12:30:28_cam4

新しい日に別の UL TAG を作成したい (位置 9 と 10)。何かのようなもの

<ul><li>2013-03-18_23:59:59_cam1</li><li>2013-03-18_09:22:12_cam1</li></ul>
<ul><li>2013-03-17_19:05:02_cam2</li><li>2013-03-17_12:30:28_cam4</li></ul>

foreach ステートメントで位置 9 と 10 を比較して助けを求める方法がわかりません。ありがとうございました!

これが私のスクリプトです

<?php
// Name of directory 
$directory = "uploads/"; 
$action=opendir($directory);
    while($read=readdir($action)){
    $dat_array[] = $read;
    }   
    //sort array reverse
    rsort($dat_array);  
    foreach($dat_array as $read) {
        if(!preg_match("!(\.|\..)$!", $read)){      
echo '<ul><li><a href="dir.php?id='.$read.'"><span>'.$read.'</span><span></span></a></li></ul>'; 
        } 
    }   
?>
4

3 に答える 3

1

このコードを試してください:

// Name of directory 
$dat_array              = array();
$directory              = "uploads/"; 
$action                 = opendir($directory);
while($read             = readdir($action)){
  $exp                  = explode("_",$read);
  $dat_array[$exp[0]][] = $read;
}   
rsort($dat_array); 

foreach($dat_array as $val){
   echo "<ul>";
   foreach($val as $v){
      echo "<li>".$v."</li>";
   }
   echo "</ul>";
}
于 2013-03-19T09:16:30.457 に答える
0

試す:

<?php

// same as a glob() on a dir, just for testing
$data = array('2013-03-18_23:59:59_cam1',
    '2013-03-18_09:22:12_cam1',
    '2013-03-17_19:05:02_cam2',
    '2013-03-17_12:30:28_cam4');


$tmp = '';
foreach($data as $k => $v) {
    $day = substr($v,0,10);
    if ($day != $tmp) {
        $HTML .= '</ul><i>'.$day.'</i><ul>';
    }
    $HTML .= '<li>'.$v.'</li>';
    $tmp = $day;
}
// add a closing tag to the end
$HTML .= '</ul>';

// NOTE: must remove inital closing tag
echo '<p>Daily lisitng:</p>'.substr($HTML,5);
?>

結果は次のとおりです。

毎日のリスニング:

2013-03-18

  • 2013-03-18_23:59:59_cam1
  • 2013-03-18_09:22:12_cam1

2013-03-17

  • 2013-03-17_19:05:02_cam2
  • 2013-03-17_12:30:28_cam4
于 2013-03-19T09:19:13.303 に答える
0
  <?php
    // Name of directory 
    $directory = "uploads/"; 
    $action=opendir($directory);
        while($read=readdir($action)){
        $dat_array[] = $read;
        }   
        //sort array reverse
        rsort($dat_array);  

        foreach($dat_array as $read) {
           $date1=explode("_",$read);
           if($date2!=$date1)
           {
           echo"<ul>";
           }
    echo '<li><a href="dir.php?id='.$read.'"><span>'.$read.'</span><span></span></a></li>';
          if($date2!=$date1)
           {
           echo"</ul>";
           }
     $date2=$date1;

        } 

    ?>
于 2013-03-19T09:21:15.970 に答える