What I meant was for you to simply change the second $val in your echo() statement. I didn't want to spoonfeed you code, but since you managed to work out the formatting, here's what I meant...
<?PHP
// leave the beginning of the script like you had before - get an array of filenames
foreach($the_array as $val) { // this is the part you should change:
$filesplit = explode('.', $val);
$timestamp = strtotime($filesplit[0]);
$list = date('F j, Y',$timestamp);
echo "<li><a href=index.php?id=$val>$list</a></li>";
}
EDIT: Also, it didn't seem slow at all for me. Is it the script that's running slow, or your internet connection? You can time the execution of a script (or even just part of a script) like so:
$arr = explode(' ', microtime());
$starttime = $arr[1] + $arr[0];
// your script here
$arr = explode(' ', microtime());
$endtime = $arr[1] + $arr[0];
echo ( 'Page loaded in <b>'.number_format(($endtime - $starttime), 7).'</b> seconds.<br />' );