ディレクトリAの下にA1,A2,A3,...となります。A1,A2,A3,..にファイルをアップロードしていきます。”最後にアップロードしてから31分です”というようなメッセージを表示させたいと思います。

以下のコードでうまくいくでしょうか。

<?php
function dhhmmss($t) {
$d = (int)($t / (24 * 60 * 60));
$h = (int)(($t - $d * 24 * 60 * 60) / (60 * 60));
$m = (int)(($t - $d * 24 * 60 * 60 - $h * 60 * 60) / 60);
$s = (int)(($t - $d * 24 * 60 * 60 - $h * 60 * 60) - $m * 60);
return sprintf('%04d-%02d:%02d:%02d', $d, $h, $m, $s);
}

function dirmtime($path, $level=3)
{
$mtime = filemtime($path);
if (0 < $level--) {
foreach (glob($path."/*") as $file) {
if (is_dir($file)) {
$subtime = dirmtime($file, $level);
if ($mtime < $subtime) {
$mtime = $subtime;
// echo $level.' '.$file.' '.date(DATE_RFC822, $mtime)."<br>";
} } } }
return $mtime;
}

function difmtime($path, $level=3) {
$now = time();
$mtime = filemtime($path);
$dtime = $now - $mtime;
if (0 < $level--) {
foreach (glob($path . "/*") as $file) {
if (is_dir($file)) {
$subtime = dirmtime($file, $level);
if ($dtime > $subtime) {
$dtime = $subtime;
// printf("(%02d) %s %s<br />\n", $level, dhhmmss($dtime), $file);
}
}
}
}
return $dtime;
}

$dtime = difmtime("P");
echo '最後にアップロードしてから ' . dhhmmss($dtime)分です;


?>

PにはAを書くのでしょうか、それともA1?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/04/10 20:43:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:Bombastus No.1

回答回数409ベストアンサー獲得回数52

ポイント60pt

最後の echo の部分が間違っています。

(誤)echo '最後にアップロードしてから ' . dhhmmss($dtime)分です;

 ↓

(正)echo '最後にアップロードしてから ' . dhhmmss($dtime) . '分です';


PにはAを書きます。

  • id:rouge_2008
    OSによっては更新時間が反映されない事もあるかもしれませんが、動作するはずです。

    表示についてですが、次の部分(※「dhhmmss($t)」関数の処理です。)

    return sprintf('%04d-%02d:%02d:%02d', $d, $h, $m, $s);

    上記を以下のように変更してはいかがでしょうか?

    return sprintf('%d日と%d時間%d分%d秒', $d, $h, $m, $s);

    「dhhmmss($dtime)」が「0日と0時間27分3秒」のように表示されます。

    ※あるいは、上記の「return sprintf('% ~);」という1行を以下のように変更すれば、余分な表示が減ってさらにすっきり表示できると思います。
    -------------------- ここから ---------------------

    if($d>0){
    return sprintf('%d日と%d時間%d分%d秒', $d, $h, $m, $s);
    }elseif($h>0){
    return sprintf('%d時間%d分%d秒', $h, $m, $s);
    }elseif($m>0){
    return sprintf('%d分%d秒', $m, $s);
    }else{
    return sprintf('%d秒', $s);
    }

    ------------------- ここまで --------------------


    ブラウザへの出力は、以下のようにしてみてください。

    echo '最後にアップロードしてから ' . dhhmmss($dtime). "経過しました。<br>";

    あるいは、

    echo '最後にアップロードしたのは ' . dhhmmss($dtime). "前です。<br>";



    ※類似質問を複数投稿されているようですが、同じ質問内で疑問な箇所を返信して1日くらい待てば、回答者さんからフォローがあるかもしれません。
  • id:Km1967
    id:rouge_2008さん>回答者さんからフォローがあるかもしれません。

    あるじゃないか。それも2回も。まるで他人事のようにシレッと答えてポイント稼ぎしようと企ててるじゃないか。
    誠意ある人なら最初につけた自分の回答のほうに訂正入れるだろ。

    この質問者には「落とし穴をいくつか開けたコード」を書いて何度か質問させ、ポイントを多重に稼ぐなど考えも及ばんのだろうな。最近、こんな質問者が多いが、質問者ももう少し賢くならんと馬鹿にされ続けるだけじゃ。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません