If you have PHP >=4.3 (4.3.3 on win32) you could use glob which returns an array in the first place (which sort() will work on ... actually glob() sorts by default but you can use natcaseort() & friends as well) ...
PHP Code:
<?
Header("content-type: application/x-javascript");
$pathstring=pathinfo($SERVER['PHP_SELF']);
$locationstring="http://" . $SERVER['HTTP_HOST'].$pathstring['dirname'] . "/";
function returnimages($dirname=".") {
$yaks = glob("*.{jpg,gif,png,jpeg}",GLOB_BRACE);
sort ($yaks);
foreach($yaks as $k=>$v){
$str .= $files[$file] = 'picsarray[' . $k .']="' . $v . '";'."\n";
}
return $str;
}
echo 'var locationstring="' . $locationstring . '";';
echo 'var picsarray=new Array();';
echo returnimages();
?>
If you have an older version and need to use readdir you will have to put the filenames in an array & then iterate through them again.
PHP Code:
<?
Header("content-type: application/x-javascript");
$pathstring=pathinfo($SERVER['PHP_SELF']);
$locationstring="http://" . $SERVER['HTTP_HOST'].$pathstring['dirname'] . "/";
function returnimages($dirname=".") {
$pattern="(.jpg$)|(.png$)|(.jpeg$)|(.gif$)";
$files = array();
if($handle = opendir($dirname)) {
while(false !== ($file = readdir($handle))){
if(eregi($pattern, $file)){
$files[]=$file;
}
}
closedir($handle);
}
sort ($files);
foreach($files as $k=>$v){
$str .= $files[$file] = 'picsarray[' . $k .']="' . $v . '";'."\n";
}
return $str;
}
echo 'var locationstring="' . $locationstring . '";';
echo 'var picsarray=new Array();';
echo returnimages();
?>