2011-09-11 39 views
-1

我有一个PHP脚本,安排由字母文件夹,但它也得到了一个空白的目录由于某种原因..这里是代码:与我的PHP脚本问题

<?php 
    $directory = opendir("albums/"); 
    $items = array(); 
    while($items[] = readdir($directory)) 
    sort($items); 
    closedir($directory); 
     foreach ($items as $item) 
    { 
     if(($item != ".") && ($item != "..")){ 
     $files[] = $item; 
     $addon = "php"; 
     $class1 = "image"; 
     $class2 = "comment"; 
     $class3 = "name"; 
     $class4 = "starcomment"; 
     $class5 = "arrow"; 
    $imglist=''; 
    $img_folder = "albums/$item/"; 
     mt_srand((double)microtime()*1000); 
    $imgs = dir($img_folder); 
    while ($file = $imgs->read()) { 
     if (eregi("gif", $file) || eregi("jpg", $file) || eregi("png", $file)) 
     $imglist .= "$item "; 
    } closedir($imgs->handle); 
    $imglist = explode(" ", $imglist); 
    $no = sizeof($imglist)-2; 
    $random = mt_rand(0, $no); 
    $image = $imglist[$random]; 
     $style = "background-image: url('thumbnail.php?file=$img_folder$image&width=147&height=83')"; 
     $dirc = "rtl"; 
     $pics = "&#1514;&#1502;&#1493;&#1504;&#1493;&#1514;"; 
     $directory2 = opendir("albums/$item"); 
     while($item2 = readdir($directory2)){ 
     if(($item2 != ".") && ($item2 != "..")){ 
     $files2[] = $item2; 
     $sizeofarray = count($files2) -1; 
     }} 
     $myFile = "albums/$item/text/text.txt"; 
     $lines = file($myFile); 
     echo "<li><a href=$item.$addon> 
     <span class=\"".$class1."\" style=\"".$style."\"></span><span class=\"".$class2."\" dir=\"".$dirc."\">$lines[0]</span><span class=\"".$class3."\" dir=\"".$dirc."\">$lines[1]</span><span class=\"".$class4."\" dir=\"".$dirc."\"> $sizeofarray $pics</span><span class=\"".$class5."\"></span> 
      </a></li>"; 
     unset($sizeofarray, $files2, $item2); 
    } 
} 
?> 

我知道其中有些是不相关,但万一他们是.. 当我测试它,它显示a.php,b.php .... .php

什么是错?

+0

没有经过你的代码,你认为opendir()也会包含“。”和“..”,可能要跳过这些。 – Duniyadnd

+0

代码太多,请考虑发布重现问题所需的最低限度。 – 2011-09-11 02:57:04

+0

Gah - 我的意思是readdir()不是opendir() – Duniyadnd

回答

1

更改

while($items[] = readdir($directory)) 

while($item = readdir($directory)) 
{ 
    if (!empty(trim($item)) && $item != '.' && $item != '..') 
     $items[] = $item; 
} 

应该修复它。