比较变量foreach

时间:2013-03-19 09:06:16

标签: php variables foreach while-loop

此脚本扫描目录“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

我想在新的一天(第9和第10位)制作单独的UL TAGS。 像

这样的东西
<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>'; 
        } 
    }   
?>

3 个答案:

答案 0 :(得分: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>";
}

答案 1 :(得分: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

答案 2 :(得分: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;

        } 

    ?>