如何通过“修改日期”对此列表进行排序?
问题描述:
我一直在试图让这个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;
}
}
答
除非你有特殊的权力,将$items
变量仍未定义:
function grab_local_folder_mp3s($folder) {
$items = array_multisort(
array_map('filemtime', $items),
SORT_NUMERIC,
SORT_DESC,
$items
);
,这是你的功能仅仅是个开始。也许值得思考如何跨多个函数分割代码?一个好的规则是:函数中有六行。如果它变得更长,开始考虑如何移出代码。试试吧,它的效果很好。
也适用于开发:启用错误报告到最高级别并跟踪错误日志。 PHP告诉你这样的错误,然后你知道在哪里看起来相当快。同时保持PHP更新,以获得最佳的错误信息。
花式,我从来没有听说过这个规则... – 2013-04-25 14:16:04