質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

424閲覧

ファイル(日付順)のソートについて

oyashiro

総合スコア37

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/09/09 08:48

編集2017/09/09 09:20

指定ディレクトリにアップロードしたファイルを一覧で表示させているのですが
更新順で表示させたいと思い悩んでます。

ファイルの格納場所ですが
201701ディレクトリのhoge1ディレクトリにファイル
201702ディレクトリのhoge1ディレクトリにファイル
など一つのディレクトリに集まっていないので
それぞれディレクトリを見て、ファイルがあったらそれを変数に格納していっている感じです。

ファイルの日付は$filetimeでファイル名は$file(ファイルによって文字数が変動)で
変数をつけ
それぞれ
$filetime[$data]
$file[$data]といった形で用意してます。

$filetimeで最新の日付を調べ、それにあった$fileを$dataで合わせ表示させてく?
みたいな感じで思ってるのですが、ソートの仕方がわかりません。

それかもっと簡単な方法ありますでしょうか?

ファイル名、ファイル時間の取得は下記のように回して格納していってます。

if(file_exists("$Path/$File")) $Accesstime = filemtime("$Path/$File"); $HikiJikan = (time() - date("U",$Accesstime))/60/60/24; $FileTime = date("Y",$Accesstime)."年".date("n",$Accesstime)."月".date("j",$Accesstime)."日".date("G",$Accesstime)."時".date("i",$Accesstime)."分".date("s",$Accesstime)."秒"; $FileSizes = filesize("$Path/$ile"); if($ShowNewTime < $HikiJikan) { $file[$data] = $file."(ファイル最終更新時刻:$FileTime ファイルサイズ:$FileSizesバイト); $filetime[$data] = $FileTime; } else { $file[$data] = "new!".$file."(ファイル最終更新時刻:$FileTime ファイルサイズ:$FileSizesバイト); $filetime[$data] = $FileTime; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tomak

2017/09/09 09:08

$filetime[$data]と、$file[$data]を作成しているPHPコードを公開してほしいです。普通はscandir()でファイル名を取得するときにソート順を昇順・降順にできます。
oyashiro

2017/09/09 09:20

追加いたしました。
Tomak

2017/09/09 09:32

>一つのディレクトリに集まっていないので、それぞれディレクトリを見て、ファイルがあったら ←この部分もコードに入れてほしいです。
Tomak

2017/09/09 09:35

あと、$filetime[$data]、$file[$data]の$dataは何が入っているのでしょうか?
guest

回答1

0

$dataというのは整数の添え字で、$file[0]$file[1]・・・$file[ファイル数-1]にファイル情報が格納されていると言うことでいいでしょうか?

$filetime[$data] = $FileTime;と配列に保存している意図が不明ですが、$Filetimeがソートキーに使えると勘違いしてのことでしょうか?
$Filetimeはソートキーには使えないので、ソートに使える$Accesstimeの配列への保存が必要です。

$Filetimeをソートキーに使うと、文字列としてのソートになるので、月は、
10月11月12月1月2月→・・・・→9月
の順にソートされます。日・時についても同様。
(月、日、時を上位ゼロありの2桁数字にすれば$Filetimeもソートキーに使えます)

$filetime[$data]には、$Accesstimeを保存してください。その前提で、下記でソートできます。

PHP

1array_multisort($filetime, $file);

投稿2017/09/09 12:40

otn

総合スコア84559

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2017/09/09 13:20

あと、更新日時に$Accesstimeという名前と中身の合わない変数名は使わない方が良いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問