2013-04-25 101 views
0

我一直在试图让这个MP3播放器通过“修改日期”来订购歌曲,但似乎无法使其正常工作。有没有一种方法可以通过“修改日期”输出结果?任何人都可以帮我解决这个问题吗?如何通过“修改日期”对此列表进行排序?

/* Reads mp3's from a local 
directory, returns array of uri's */    
function grab_local_folder_mp3s($folder) { 
    $items = array_multisort(

       array_map('filemtime', $items), 
       SORT_NUMERIC, 
       SORT_DESC, 
       $items 
      ); 
    if (($lp = strpos($folder, $this->Rooturl)) || preg_match("!^/!", $folder)) { 
     if ($lp !== false) { 
      $fp = str_replace($this->Rooturl, "", $folder); 
      $fp = str_replace("www.", "", $fp); 
      $fp = str_replace("http://", "", $fp); 
      $fp = str_replace("https://", "", $fp); 
     } else { 
      $fp = $folder; 
     } 
     $path = $_SERVER['DOCUMENT_ROOT'] . $fp; 
     if ($handle = @opendir($path)) { 
      $j=0; 
      while (false !== ($file = readdir($handle))) { 
       if ($file != '.' && $file != '..' && filetype($path.'/'.$file) == 'file' && preg_match("!\.mp3$!i", $file)) { 
        $items[$j++] = $file; 
       } 
      } 
      closedir($handle); 
      if (($c = count($items)) > 0) { 
       asort($items); 

       if ($this->folder_order != "asc") { 
        $items = array_reverse($items, true); 
       } 
       $fp = preg_replace("!/+$!", "", $fp); 
       foreach ($items as $i => $mp3) { 
        $items[$i] = "http://" . $_SERVER['HTTP_HOST'] . $fp . "/" . $mp3; 
       } 
      } 
      $this->dbug['str'] .= "\nRead folder - Done, " . $c . "mp3(s) in folder http://" . $_SERVER['HTTP_HOST'] . $fp; 
      return $items; //the tracks array 
     } else { 
      $this->dbug['str'] .= "\nRead folder - Couldn't open local folder, check path/permissions to http://" . $_SERVER['HTTP_HOST'] . $fp; 
      return true; 
     } 
    } else { 
     $this->dbug['str'] .= "\nRead folder - Path was remote or unreadable." . $fp; 
     return false; 
    } 
} 

回答

0

除非你有特殊的权力,将$items变量仍未定义:

function grab_local_folder_mp3s($folder) { 
    $items = array_multisort(

       array_map('filemtime', $items), 
       SORT_NUMERIC, 
       SORT_DESC, 
       $items 
      ); 

,这是你的功能仅仅是个开始。也许值得思考如何跨多个函数分割代码?一个好的规则是:函数中有六行。如果它变得更长,开始考虑如何移出代码。试试吧,它的效果很好。

也适用于开发:启用错误报告到最高级别并跟踪错误日志。 PHP告诉你这样的错误,然后你知道在哪里看起来相当快。同时保持PHP更新,以获得最佳的错误信息。

+0

花式,我从来没有听说过这个规则... – 2013-04-25 14:16:04

相关问题