PHPファイル内にはHTMLも共存できる。
<?php
// 処理
?>
PHPの終了タグはファイルの終了なら省略可能。
行末にはセミコロンを付ける
<?php
echo "Hello, world!";
?>
echo "Hello, world!";
echo $message;
echo 10 / 5;
末尾に改行はされない。
printf("文字列", 変数1, 変数2...);
$s = 'banana';
$n = 40;
$p = 5.23;
printf("We have %d $ss for $%.2f", $n, $s, $p); # We have 40 bananas for $5.23
%d | 整数 |
%f | 浮動小数点数 |
%s | 文字列 |
%5d
と書くと、5桁まで表示する。
%05d
と書くと、5桁まで表示する(5桁に満たない場合は0をつける)。
%.2f
と書くと、小数点以下2桁まで表示する。
sprintf
を使うと、文字列を表示するのではなく、返すだけになる。
var_dump($message);
// コメント
# コメント
/* コメント */
入れ子にはできない。
$message = "Hello, world!";
echo $msg;
echo "$msg";
echo "${msg}";
define("ADMIN_EMAIL", "example@gmail.com");
定数名はすべて大文字。
使用するときはそのまま書く:
echo ADMIN_EMAIL;
true / false
)
null
(空データ)
変数展開 | 特殊文字(\n, \t )
| |
ダブルクォーテーション | ○ | ○ |
シングルクォーテーション | × | × |
+ | 加算 |
- | 減算 |
* | 乗算 |
/ | 除算 |
% | 剰余(除算の余り) |
()
で優先順位を指定可能。
. | 連結 |
echo "Hello, " . "world!";
加算子(インクリメント) / 減算子(デクリメント)
$変数++ | 1を加え、変数を返す |
++$変数 | 変数を返し、1を加える |
$変数-- | 1を引き、変数を返す |
--$変数 | 変数を返し、1を引く |
短縮した演算子 | 意味 |
---|---|
x += y; | x = x + y;
|
x -= y; | x = x - y;
|
x *= y; | x = x * y;
|
x /= y; | x = x / y;
|
x %= y; | x = x % y;
|
x .= y; | x = x . y;
|
== | 等しい |
!= | 等しくない |
== | 厳密に等しい |
!= | 厳密には等しくない |
> | 左が右より大きい |
< | 左が右より小さい |
>= | 左が右以上 |
<= | 左が右以下 |
厳密に等しい・等しくないとは、型も含めて比較する。
&& | AND |
|| | OR |
! | NOT |
例:
score < 80 && score > 60 // 60より大きく80より小さい
if (条件) {
真の場合の処理
}
if (条件) {
真の場合の処理
} else {
偽の場合の処理
}
if (条件) {
真の場合の処理
} elseif (条件) {
真の場合の処理
} else {
偽の場合の処理
}
if (条件):
真の場合の処理
endif;
if (条件):
真の場合の処理
else:
偽の場合の処理
endif;
if (条件):
真の場合の処理
elseif (条件):
真の場合の処理
else:
偽の場合の処理
endif;
例:
$age = 23;
if ($age > 20){
echo "ok"
}
変数 = (条件) ? b : c
例:
b, c = 10, 20
a = (b > c) ? b : c # 大きい方をaに代入
変数が値に一致した場合に実行する
switch (オブジェクト) {
case '値': # 値に一致した場合
処理
break;
case '値': # 複数の値を指定することも可能
case '値':
処理
break;
default: # どの値にも一致しない場合
処理
break;
}
例:
$signal = 'red'
switch ($signal) {
case 'red':
echo 'stop!';
break;
case 'blue':
case 'green':
echo 'go!';
break;
case 'yellow':
echo 'caution!'
break;
default:
echo 'wrong signal!';
break;
}
条件が真の間繰り返す
while (条件) {
処理
}
例:
$i = 0;
while ($i < 3) {
echo $i;
$i++;
}
条件が真の間繰り返す
do {
処理
} while (条件);
例:
$i = 0;
do {
echo $i;
$i++;
} while ($i < 3);
最低1回は実行される。
繰り返す
for (変数初期化; 条件; 終了後の処理) {
処理
}
例:
for ($i = 0; $i < 10; $i++) {
echo $i;
}
ループから抜ける
ループを1回スキップ
配列をループ
foreach ($配列 as $変数){
処理
}
例:
foreach ($youbi as $y){
echo $y;
}
連想配列をループ
foreach ($連想配列 as $変数1 => 変数2){
処理
}
例:
foreach ($sales as $key => $value){
echo $key, $value;
}
$youbi = array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
echo $youbi[0];
添字は0から始まる。
$youbi[0] = "Sunday";
$youbi[] = "Sun";
unset($youbi[1]);
他の要素の添字は変更されない。
$sales = array("yamada"=>100, "tanaka"=>200);
echo $sales["yamada"];
$sales["yamada"] = 300;
unset($sales["yamada"]);
function 関数名($変数1, $変数2...) {
処理
}
例:
function hello($name) {
echo "Hello, $name";
}
関数名(引数1, 引数2...);
例:
hello("yamada");
関数内でreturn
を使用して、返り値を指定できる。
return 'Hello!';
関数呼び出し時に引数が設定されなかった場合の値
function($変数 = 初期値) {
}
例:
function($name = "yamada") {
}
$foo = hello();
echo hello();
関数内で宣言した関数は、その関数内でしか利用できない。また、関数外の変数を関数内では利用できない。
関数 | 説明 | 備考 |
strlen(s) | バイト数 | |
strpos(s, c) | 指定文字の出現場所 | 添字は0から始まる |
substr(s, n1) | 指定文字目以降 | |
substr(s, n1, n2) | 指定文字目から指定文字数 | -は末尾から 添字は0から始まる |
str_replace(s1, s2, s3) | s3の中のs1をs2に置換 |
mb_strlen(s)
のようにmb_
をつけると、マルチバイト文字に対応する。
abs(n) | 絶対値 | |
ceil(n) | 切り上げ | |
floor(n) | 切り捨て | |
round(n) | 四捨五入 | |
pi() | 円周率 | |
mt_rand(n1, n2) | 乱数 | 指定範囲内 |
count(a) | 要素数 | |
sort(a) | 並べ替え | |
in_array(ns, a) | 存在するか | true / false |
implode(s, a) | 配列を指定区切り文字で出力 | |
explode(s, a) | 配列に指定区切り文字で変換 |
time() | 現在時刻をUNIX出力 | |
mktime(時, 分, 秒, 月, 日, 年) | 指定時刻をUNIX出力 | |
strtotime(時, 分, 秒, 月, 日, 年) | 指定時刻をUNIX出力 | |
date(s, t) | 指定フォーマットに変換 | tを省略時は現在時刻 |
時刻はPHPではUNIXタイムスタンプで扱われる。
strtotimeの指定可能書式 | |
---|---|
2001/01/01 00:00:00 | now |
2001-01-01 00:00:00 | tomorrow |
Jan 1, 2001 00:00:00 | +2 day |
1 Jan 2001 00:00:00 | last Monday |
2014-2-4 1.14 pm | next Month |
dateの指定可能書式 | |||
---|---|---|---|
例:date("Y-m-d H:i:s")
| |||
d | 2桁の日 | L | うるう年(0/1) |
j | 1-2桁の日 | Y | 年(4桁) |
D | 3文字の曜日 | y | 年(2桁) |
l(小L) | 曜日 | a | am / pm |
w | 曜日(日0-月6) | A | AM / PM |
N | 曜日(月1-日7) | g | 12時間制の時(1-12) |
S | 序数(st,nd,rd,th) | G | 24時間制の時(0-23) |
z | 年間通算日(0-365) | h | 24時間制の時(01-12) |
W | 年の週番号 | H | 24時間制の時(00-23) |
F | 英語月 | i | 分(00-59) |
M | 英語月(3文字) | s | 秒(00-59) |
m | 月(01-12) | c | 2001-01-01T00:00:00+00:00 |
n | 月(1-12) | r | Mon, 01 Jan 2001 00:00:00 +0000 |
t | 月の日数(28-31) | U | UNIX秒(1970/1/1からの秒数) |
$file = 'test.txt';
$contents = 'text'
file_put_contents($file, $contents);
fopen(), fwrite(), fclose()
を自動で実行する。ファイルが存在しない場合は作成し、存在する場合は上書きする。
フラグも使用できる(FILE_APPEND
:追記、LOCK_EX
:同時書き込み禁止):
file_put_contents($file, $contents, FILE_APPEND | LOCK_EX);
$contents = file_get_contents("test.txt");
$contents = file_get_contents("http://www.example.com/");
$contents = file("test.txt");
<form action="get_info.php" method="post">
<input type="text" name="birthday" value="">
<input type="submite" value="送信">
</form>
<?php
$birthday = $_POST['birthday'];
$youbi = date("l", strtotime($birthday));
?>
<!DOCTYPE html>
<meta charset="UTF-8">
<title>PHP</title>
<p><?php echo htmlspecialchars($youbi); ?></p>
文字をエスケープするためにhtmlspecialchars()
を使う。
© 2019 shge.github.io 利用規約・プライバシー