2012年11月24日土曜日

PHP再来

こんばんは!

ちょっと今学校のPHPの教科書をやり直していまして、if文について教えて欲しいです。

ヒマがあれば(ってあるわけないですねーー)で結構です。

PHPでは「=」を代入として使います。比較文では「===」で内容の合致を検出するらしいですが僕がいま悩んでいるのはタイムスタンプとの比較です。

strftime()関数でPCの時間を取ってきて誕生日との比較をしました。

以下ソース


<?php
$Nenrei = 30;
$year = 2012;
$month = 7;
$date = 7;
$birth = "{$year}/{$month}/{$date}";
$day = strftime("%Y/%m/%d");

if($day===$birth){
    echo "今日は{$birth}。弟は今日{$Nenrei}歳になりました。";
}

elseif($day>$birth){
    echo "弟はもう既に{$Nenrei}歳です。";
    }

elseif($day<$birth){
    echo "弟はまだ{$Nenrei}歳ではありません。";
    }


echo "\n";
echo $birth;
echo "\n";
echo $day;
?>

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
11/25(日)更新プログラム



<?php
$Nenrei = 30;
$year = 2012;
$month = 7;
$date = 7;
$birth = "{$year}/{$month}/{$date}";
$day = strftime("%Y/%m/%d");
if($day===$birth){
echo "今日は{$birth}。弟は今日{$Nenrei}歳になりました。";
}

elseif($day < $birth){
echo "弟はもう既に{$Nenrei}歳です。";
}

elseif($day > $birth){
echo "弟はまだ{$Nenrei}歳ではありません。";
}

echo "\n";
echo $birth;
echo "\n";
echo $day;
?>


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー



こう書いたらたぶん比較の大なり>が使ってあるところが出力されると思うんですが、なぜか小なり<の方が出力されてしまいます。


なんで??どうも現在の2012年11月24日と指定した2012年7月7日では後者が大きい数値と見做されてしまいます。
試しに文中の > と < 逆に変えたら < の方が出力されましたもん…(泣)
ちなみにちゃんと現在の日時は2012年11月24日ですた…


まぁ時間あったら(無いわな…)レスしてやってくださいまし…。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
11/25(日)追記

上記に今日作成したプログラム(同じだと思う)を載せておきましたがこれで私は直りました。
結局なにがいかんかったのか…??
phpはよくわからん…



10 件のコメント:

  1. 時間はあるけど、PHPは苦手です。やっぱりこれは、実男メンバー出来るツワモノ隊出動でしょう!

    返信削除
    返信
    1. ありがとうございます!
      phpけっこう面白いんですが
      ときどきなんかわけわからんくなるんで
      pc投げ出したくなったりしますww

      削除
    2. やり出したらきっと少しずつ楽しいんだと思います。つまずきが多い分なにくそ根性でやったら、へ、へ、へ大したことの無い奴めって思うんだろうな。
      負けんなーそんな奴やっつけちまえ!!

      削除
  2. >daiyasakuraさん

    ありがとうございます!
    なにくそ根性、僕もよく使います。
    意地でも食らいついていきます(笑)

    返信削除
  3. Akrさんは本当に偉いねぇ~…。感心するわ~。

    私なんてもうPHPなんて早くにほったらかし…。
    見習わねば…。

    なんか、上のログを見てて思ったんだけど、Excelとかでも日付・時刻の計算とか比較になるとシリアル値を使いますよね。
    PHPでもそういうのがあったりするのかしら?(むっちゃ適当…笑)

    ということで、いつもの事ながら全然役に立てずにすみません。
    PHPマスターしたら教えてね~(^_^)/~

    返信削除
    返信
    1. レスポンスありがとうございます。

      原因はですね、>と<の使い方を逆にしたら

      うまくいったんですよね。

      でも例えば

      $day < $birth の場合、

      現在の日時($day)の数値が

      誕生日($birth)の数値よりも小さい時にTrueで出力

      て認識なんですが…

      <(小なり)ってそういう使い方ですよね

      その時ってつまり、まだその日が来ていないってことになるわけですがphpだと違う…??

      Excelのシリアル…エポックタイムのことかな?

      ちょっとわからないです。すみません。

      削除
  4. %dだから07月07日って書かないと、70月70日って解釈して計算されるとか??

    %dのところを%eにしてみるとか????

    返信削除
    返信
    1. 私もそれ思った!!
      2ケタとして10の位を7として比較されてるんちゃうかなぁ~、と。
      でも、動作確認身なので、何とも言えませぬ。

      削除
    2. そうやんな?CPって70月とかって普通に計算してそうwww

      だが私はphpが苦手だ!!試してみよっとwww

      削除
    3. お二人ともあざーっす

      うーんとね…一応うまくいったんだけど…

      $birth ="%e[{$year}/{$month}/{$date}]";

      にしたら

      %e[2012/7/7]になった^^;

      お粗末なんでもっといい方法ないかぁ??

      削除