多次元配列のソート。 ディレクトリの中身を array_multisort を使ってソートする


配列の初期化


$dirlist = array();
$udate = array();
 ディレクトリ内のファイル名を取得して$strDirに格納


            $filedir = ディレクトリ名;

$strDir = opendir($filedir)or die("couldnt open directory");

 ディレクトリの内容を順に配列$dirlistに格納


while($str = readdir($strDir)){
array_push($dirlist,$str);
}

 ファイルの総数を $files へ格納


$files = count($dirlist);


カウンターを初期化


if(!($counter)){

$counter = 0;

}

 ファイルのパスを$openfilepassへ格納する


while ($counter < $files){

$openfile = $dirlist["$counter"];
$openfilepass = $filedir . "/" . $dirlist["$counter"];
$counter ++;

}

ファイルの更新日を取得して配列の格納する


$mod = filemtime($openfilepass);
$ud = date("Y/m/d H:i", $mod);

array_push($udtime,$ud);

ファイル名と更新日の二次元配列ができます


            $list_array = $array($dirlist,$udtime);

 ファイル名順でソートする


array_multisort($list_array[0], SORT_STRING, SORT_ASC,
$list_array[1], SORT_STRING, SORT_ASC);
 
 日付の新しい順でソートする


array_multisort($list_array[1], SORT_STRING, SORT_DESC,
$list_array[0], SORT_STRING, SORT_ASC);

確認


print_r($list_array);


参照URL:
http://metaboy.blog23.fc2.com/blog-entry-114.html