2013-03-19 193 views
3

此腳本掃描目錄'uploads'並列出其子文件夾。 所有子文件夾具有這種結構比較變量foreach

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標籤(位置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> 

我不知道如何比較位置9和10的foreach語句,尋求幫助!謝謝!

這裏是我的腳本

<?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>'; 
     } 
    } 
?> 

回答

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>"; 
} 
+0

作品完美!謝謝。我唯一要求的是如何以相反的順序對輸出進行排序。我試過了,但是找不到。 – Roman 2013-03-21 12:29:58

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); 
?> 

結果是:

日報lisitng:

2013年3月18日

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

2013年3月17日

  • 2013-03-17_19:05:02_cam2
  • 2013-03-17_12:30:28_cam4
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; 

     } 

    ?>