- ベストアンサー
PHPの改造方法についての質問
- PHPの改造をしていますが、特定の文字を置いた場合に時間が表示されないようにしたいです。
- 現在、数値を0と置いた場合には1970年1月1日 9:00と表示されてしまいます。
- is_numeric関数を使用して条件分岐しましたが、何も表示されなくなりました。どのように改善すればよいでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
あなたが何をやりたいのか、きちんと整理してから質問してください。 幼稚園児にでも一からちゃんと手順を教えるように分かりやすく、そうやって処理を明確にしない限りは自分がどうやってプログラミングしていけばよいのかが分からなくなりますよ。フローチャート等で図式化してみるのもひとつの方法です。 それから、文法の基礎はきちんと身につけること。どんなときにどんな関数を使うとかいう小手先の知識は調べながらでも構いませんが、基礎が無いと根本的に間違ったプログラミングをしてしまいます。 あと、ソースコードを載せるときは一部分だけでなく、関連する変数の入出力とかもきちんと示してください。 > $row['date'] = gmdate($format, $ptime+9*3600); > 上記だと、数値を0と置いたときに、1970年1月1日 9:00 > となってしまい、Aなどの文字を置いても、同じく > 1970年1月1日 9:00 が出てきます。 まず変数$ptimeには何が入ってるのでしょうか? 表示が「1970年1月1日 9:00」となるのは$ptimeの値が60未満だからでしょう。これは1970年1月1日0時0分0秒を基点として経過秒数で時刻を表すUNIX時間の表示関数を使ってるからです。例えば現在時間を表示するのであれば1970年1月1日0時0分0秒を基点とした現在の秒数が設定されている必要があります。 > $row['date'] = if(is_numeric($dt)){ > gmdate($format, $ptime+9*3600); > } > } else { > echo "AAA"; > } if文はプログラムの条件判定による制御を行うステートメントであって、値は返しません。echoも同じです。したがって、$row['date']には何も代入されません。(実際にはnullが入るかどうかは知りませんが、期待する値が入らないのは確かでしょう) あと、{}の対応があっていないので、以降のコードが正しく実行されないでしょう。 > 私の希望する表示(時間を出さない方法)を教えてください。 $dtが空なら現在時間の表示、'0'なら無表示、その他文字ならそれを表示というのなら if($dt==="0") { $row['date'] = ""; } else { if (empty($dt)) { $row['date'] = date($format); } else { $row['date'] = $dt; } }
お礼
大変厳しいご指摘、有難うございます。 当方、プログラマではなく、フリーのCGIやPHPのユーザーでしかないため、 質問に不備がありましたことをお詫びいたします。 お陰さまで、「0を入れるとなにも出てこない」プログラムに改造することが出来ました。 本当に有難うございました。 心より御礼申し上げます。