phpのブログ -4ページ目

phpのブログ

独学PHPのメモとして使用しています

date関数


日付を文字列として取得する関数としてdate関数がある
引数として指定された形で、Y n j A h iなどがあり
西暦 月 日 AM(PM) 時 分が表示される



<?php
$time = date( "Y" ) . "年" . date( "n月j日") . date("Ah:i");
print($time);
?>


実行結果は



2011年12月14日AM08:25



となる
「2011年12月01日」などのような日付文字列を取得したい場合には
「date('Y年m月d日');」のように行う

と勉強してみたが年は文字化けがされてしまったので上記の方法を用いた


フォーマット文字列で使われていない文字を記述した場合は単に文字列として表示される
フォーマット文字列と同じ文字を文字として表示したい場合には「¥」でエスケープする



date('d day'); --> 01 01am06
date('d ¥d¥a¥y'); --> 01 day



「d」も「a」も「y」もそれぞれフォーマット識別子としての意味を持つため
「day」という文字列を表示させるにはそれぞれの文字に対して「¥」でエスケープを行う必要がある


「フォーマット文字」には、以下のものがある


フォーマット文字 変換 戻り値
y 年(2桁表記) 04
Y 年(4桁表記) 2004
n 月(先頭にゼロを付けない) 1 ~ 12
m 月(2桁表記) 01 ~ 12
M 月(3文字形式) Jan ~ Dec
F 月(フルスペルの文字) January ~ December
j 日(先頭にゼロを付けない) 1 ~ 31
d 日(2桁表記) 01 ~ 31
w 曜日(整数) 0(日曜) ~ 6(土曜)
D 曜日(3文字のテキスト) Mon ~ Sun
l 曜日(フルスペル形式) Sunday ~ Saturday
a 午前または午後(小文字) am または pm
A 午前または午後(大文字) AM または PM
g 時(12時間単位) 1 ~ 12
h 時(12時間単位、2桁表記) 01 ~ 12
G 時(24時間単位) 0 ~ 23
H 時(24時間単位、2桁表記) 00 ~ 23
i 分(2桁表記) 00 ~ 59
s 秒(2桁表記) 00 ~ 59
L 閏年であるか否か 1 または 0
t その月の日数 28 ~ 31
S 日付の英語形式の序数に対応した接尾辞 st, nd, rd, th
z 年間の通算数 0 ~ 366
W ISO-8601 月曜開始の年単位の週番号 23(週目)
O グリニッジ標準時(GMT)との時間差 +0900
r RFC 822 フォーマットされた日時 Sat, 5 Jun 2004 18:44:59 +0900
T サーバのタイムゾーン 東京 (標準時)
B Swatch Internet Time 000 ~ 999
I サマータイム制か否か 1 または 0
U Unixタイムからの秒数 タイムスタンプと同じ
Z タイムゾーンのオフセット秒数 -43200 ~ 43200

例はすべて

<html>
<head><title>タイトル</title></head>
<body>
内容

</body>
</html>

で作られるサンプルページを頭に内容を変更して動作を確認する

PHPの本体はHTML内に置かれ<?php ~ ?>で記載する
< >で囲まれた範囲がPHPの本体になる
PHPの処理命令を示すのが<?php ~ ?>に囲まれたスクリプトそのものである

PHPを記述した文書の拡張子は「.html」ではなく「.php」とする



入力フォーム

in.phpを作る


入力フォームです。
名前を入力してください。
<form action="out.php" method="post">
<table border="1">
<tr>
<td>名前</td>
<td><input type="text" name="name"></td>
<td colspan="2" align="center">
<input type="submit" value="入力">
</td>
</tr>
</table>
</form>

<form action="out.php" method="post">
action属性で指定してるファイルにデータを渡す
method属性ではデータを送る際の送信方法を指定する
postとはURLと別にデータを送る方法のこと


<input type="text" name="name">
inputタグのnameオプションで指定している名前(""内)で
入力したデータが送られる
typeオプションではtextを指定してtextフィールドを表示している


<input type="submit" value="入力">
typeオプションでsubmitを指定し送信ボタンを表示する
valueの=""にはボタンに表示する名前を設定できる


phpのブログ-in.php

名前太郎で入力してみる



phpのブログ-in.php名前太郎


出力フォーム


out.phpを作る



<?php
$name = $_POST['name'];
print ("次のデータを受け取りました<br />");
print ("名前:$name<br />");
?>


$name = $_POST['name'];
スーパーグローバル変数である$_POSTを使っている
スーパーグローバル変数とは宣言なしで使えるグローバル変数のこと
サーバークライアント間のデータのやり取りを担っている

入力フォームでmethodをpostと指定したのでスーパーグローバル変数$_POSTによって受け取っている
入力したテキストはnameという名前で送信されているので $_POST['name']となる



phpのブログ-out.php

foreach文は配列に対して繰り返し処理を行う

foreach(配列 as $val)
foreach(配列 as $key => $val)


2つとも配列の値の数だけ処理を繰り返し行うが2つ目の構文は
連想配列に対して使用される
配列の値が$valに代入され配列のキーが$keyに代入される
for文などで配列の数だけループさせたいときはcount関数を使う



<?php
$baseball = array('鈴木'=>16, '松井'=>55, '清原'=>5);
foreach ($baseball as $key => $val){
print ($key." : ".$val."<br />");
}
?>


実行結果は


鈴木 : 16
松井 : 55
清原 : 5



となる


$keyによって設定されたキーワードと共に格納されるインデックスと

$valueに格納されるインデックスとグループ化する



<?php
$a = array("Apple" => "りんご", "Orange" => "みかん",
"Grape" => "ぶどう");
foreach( $a as $key => $value) {
print("$key は、$value<br>\n");
}
?>



実行結果は



Apple は、りんご
Orange は、みかん
Grape は、ぶどう



となる


変数$aに格納された配列は、キーワードが「=>」によって2つの値を対にしてそれぞれを取り込んでいる
foreach構文ではそのキーワードをもとにしてそれぞれの値を変数$key$valueにループしながら変換
ループは、取り込まれたインデックスの数だけ行われる

ループを繰り返す前に必ず1回だけ実行されその値に基づいて条件式で評価しその値が
「true」ならブロック内の処理スクリプトを実行し

処理が終わったら増減式で初期値式の値を増やしたり減らしたりする

ループに入る前に初期値式を実行し条件式で評価する
評価した値が条件に合えば処理を行い増減式を実行してから条件式に戻る
しかし条件がマッチしない場合にはループを実行しない



<?php
for ($a=0; $a<3; $a++){
print ($a."<br />");
}
?>


実行結果は


0
1
2


となる



<?php
for($a = 0; $a < 3; $a++) {
$numenume = array("123","456","789","AAA","BBB");
print($numenume[$a]). "&#160;\n";
}
?>


初期値として変数$aに1をセットしてある
条件式では$aが3を超えているかどうかを評価し3以内であれば「true」と判断
そして処理のスクリプトを実行
処理後$aの値に1を加えて条件式を繰り返す

whileに似た構文としてdo while構文がある
処理スクリプトは条件に関わらず最低1回は実行される
最初に処理したい場合のループに向いた制御構文



<?php
$a=5;
do {
print ($a."<br />");
$a--;
}while ($a > 10);
?>


実行結果は


5


となる




<?php
$a = 0;
$numenume = array("123","456","789","AAA","BBB");
do {
print($numenume[$a]). "&#160;\n";
$a++;
} while($a < 3);
?>


実行結果は


123 456 789


となる


最初に初期値となる変数と配列を用意しそれをdo文で解釈して実行
処理が終わったら変数の増減式地を設定する
初期値として設定された変数 $aに1を加えその後while文によって変数の値を評価
もし増減式を設定しなければ非常に危険な「無限ループ」に陥り

閲覧者のリソースを著しく損なう結果となるので
do~while構文を使う場合には、その点に十分注意!!