開発ノート【PHP基本文法】
開発ノート【PHP基本文法】です。
当サイトは、Bootstrap5で製作しています。
関連サイト
| 種類 | サイト名称/ページタイトル | 説明 |
|---|---|---|
| 公式サイト(ドキュメント:型) | PHP: 型 - Manual | PHPのドキュメント公式サイトです。(型) |
PHP基本文法
ソースコードの入力ルール
- ***
- ***
- ***
命名規則
変数名
- $記号の後に変数名を付ける。
- 使える文字は、英字、数字、アンダースコア、日本語。
- 変数名は、英字、アンダースコア、日本語から始める。(数字はダメ)
- 日本語は使わない。
定数名
定義した値が変わることがないときに使う。
定義すると、値をプログラムの中で変えることが出来なくなる。
- constで宣言する。
- $記号はいらない。
- 命名規則は、変数と同じ。
- 慣例として全て大文字を使う。(小文字も使える)
-
define()関数を使って定義することも出来るが、Warningが表示される。
※将来使えなくなる可能性があるため、constを使う。
変数、型、値(リテラル)
-
変数
データ(値、リテラル)の入れ物のこと。 -
型
変数に入る値に応じたデータ属性のこと。(文字、数値) -
リテラル
ソースコードにおいて使用される、定数のこと。
値そのものを指すこともある。
データ型の種類
-
論理型、真偽値(boolean)
true又はfalseの値をとる演算子。 - 整数型(int)
-
浮動小数点型(float)
小数を扱える型。 - 文字列型(String)
-
配列型
複数の値を一つの変数で扱うしくみ。
変数名の後ろに[]を付ける。
要素のインデックスは0~。
要素数が5の場合、インデックスは0~4。$color[0] = '黒'; $color[1] = '白'; $color[2] = '赤';
// []内を省略すると、インデックス0~値が指定されていく $color[] = '黒'; $color[] = '白'; $color[] = '赤';
//配列を一気に指定する $color = ['黒', '白', '赤']; // $color = array('黒', '白', '赤'); // PHP5以前の書き方 $myfavorite = 2; echo $color[$myfavorite];実行結果
赤
//配列を一気に指定する(2次元) $book = [ ['デザイン入門', 'デザインの基礎'], ['PHP入門', '高度なPHP開発'] ]; echo $book[1][0];実行結果
PHP入門 -
連想配列
$pref['hokkaido'] = '北海道'; $pref['aomori'] = '青森県'; $pref['iwate'] = '岩手県'; $mypref = 'iwate'; echo $pref[$mypref];実行結果
岩手県
$pref = [ 'hokkidou' => '北海道', 'aomori' => '青森県', 'iwate' => '岩手県', ]; $mypref = 'iwate'; echo $pref[$mypref];実行結果
岩手県
$pref['hokkido'] = [ '赤平市', '旭川市', '芦別市' ]; echo $pref['hokkido'][1];実行結果
旭川市 - Iterable
- オブジェクト
- リソース
- NULL
- コールバック(Callabie)
「' '」と「" "」の違い
どちらを使っても同じだが、文字列の中に変数やエスケープシーケンスがあると動作に違いが出てくる。
基本は、「' '」を使う。
- '':変数やエスケープシーケンスが「文字」として認識される。
- "":変数が「変数内の値」に、エスケープシーケンスが特殊文字に変換される。
$count = '5'; //変数$countに「5」を代入
echo 'バナナが、$count本あります。'; //シングルクォーテーション使用
echo "\n";
echo "バナナが、{$count}本あります。"; //ダブルクォーテーション使用
echo "\n";
echo 'りんごが、\n5本あります。'; //シングルクォーテーション使用
echo "\n";
echo "りんごが、\n5本あります。"; //ダブルクォーテーション使用
実行結果バナナが、$count本あります。
バナナが、5本あります。
りんごが、\n5本あります。
りんごが、
5本あります。
echo 'I\'m "Japanese"';
echo "\n";
echo "I am \"Japanese\"";
echo "\n";
echo '\n改行を\n入れて出力します\n';
echo "\n改行を\n入れて出力します\n";
実行結果I'm "Japanese"
I am "Japanese"
\n改行を\n入れて出力します\n
改行を
入れて出力します
複数行のテキスト表示
長文を出力する際、下記の記述が出来るが、見づらい。
その対策として、
- ヒアドキュメント
- Nowdoc(ナウドック)
echo '吾輩は猫である。
名前はまだ無い。
どこで生れたかとんと見当がつかぬ。
何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。';
実行結果吾輩は猫である。
名前はまだ無い。
どこで生れたかとんと見当がつかぬ。
何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
ヒアドキュメント
- 「" "」と同じ動きをするので、エスケープシーケンスが使える。
- 「echo <<< EOT」で始まり、「EOT;」で終わる。
- 終端ID「EOT」の部分はどんな文字でも良いが、「EOT」と大文字で記述するのが一般的。
- 「EOT」を""(ダブルクォーテーション)で囲ってもいい。
echo <<< EOT
吾輩は猫である。\n
名前はまだ無い。
どこで生れたかとんと見当がつかぬ。
何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
EOT;
実行結果吾輩は猫である。
名前はまだ無い。
どこで生れたかとんと見当がつかぬ。
何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
Nowdoc(ナウドック)
- 「' '」と同じ動きをするので、エスケープシーケンスを記述しても文字列として扱われる。
- 「echo <<< 'EOT'」で始まり、「EOT;」で終わる。
- 終端ID「'EOT'」の部分はどんな文字でも良いが、「'EOT'」と大文字で記述するのが一般的。
- 「EOT」を''(シングルクォーテーション)で囲む。
echo <<< 'EOT'
吾輩は猫である。\n
名前はまだ無い。
どこで生れたかとんと見当がつかぬ。
何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
EOT;
実行結果吾輩は猫である。\n
名前はまだ無い。
どこで生れたかとんと見当がつかぬ。
何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
エスケープシーケンス(特殊な文字の表現)
タブや改行といったキーボードから入力できない特殊な文字を表現するための方法。
「\」+特定の文字で表現する。
| エスケープシーケンス | 説明 |
|---|---|
| \t | 水平タブ |
| \n | 改行 |
| \r | 復帰(キャリッジリターン) |
| \' | シングルクォーテーション |
| \" | ダブルクォーテーション |
| \\ | \文字 |
| \$ | $文字 |
| ¥( | 左括弧 |
| ¥) | 右括弧 |
| ¥[ | 左括弧 |
| ¥] | 右括弧 |
| \nnn | 8進数表記 |
| \xnn | 16進数表記 |
echo "私の名前は\"鈴木\"です";
echo "\n";
echo "この魚の値段は\\250です";
実行結果私の名前は"鈴木"です
この魚の値段は\250です
算術演算子(代数演算子)
echo 1+2; // 結果:3
echo "\n";
echo 10*3; // 結果:30
echo "\n";
echo 10/3; // 結果:3.3333333333333
echo "\n";
// 剰余算
echo 12%3; // 結果:0
echo "\n";
// 累乗
echo 2**3; // 結果:8
echo "\n";
実行結果3
30
3.3333333333333
0
8
代入演算子
$a += $b; // $a = $a + $b;
$a -= $b; // $a = $a - $b;
$a *= $b; // $a = $a * $b;
$a /= $b; // $a = $a / $b;
$a %= $b; // $a = $a % $b; $aを$bで割った余りを$aに代入
インクリメント演算子
1増やす。
回数を数えるプログラムでよく使う。
$a++; // $a += 1;
デクリメント演算子
1減らす。
回数を数えるプログラムでよく使う。
$a--; // $a -= 1;
比較演算子
条件によって処理を分岐したいときに使用する。
条件式が成立すれば、true。
成立しないと、false。
-
「==」と「===」は、特別な理由が無い限り、「===」を使用した方がいい。
※PHPは、型を厳密に扱っていないが、型を意識してプログラミングした方がいいのはそのため。
-
a == b
aとbが等しい。 -
a === b
aとbが等しい。(型も同じ) -
a != b
aとbが等しくない。 -
a <> b
aとbが等しくない。 -
a !== b
aとbが等しくないか、同じ型でない。 -
a < b
aはbより小さい。 -
a > b
aはbより大きい。 -
a <= b
aはbと等しいか、小さい。 -
a >= b
aはbと等しいか、大きい。
論理演算子
- 論理積と論理和が2種類あるのは、演算を行う優先順位が異なるため。
- C言語のなごりで、多くのプログラマーが&&、||を使っている。
| PHP | 論理演算子 | 説明 |
|---|---|---|
| && | 論理積(AND) | 左辺と右辺が両方ともtrueのとき、trueを返す。 |
| || | 論理和(OR) | 左辺と右辺のどちらかがtrueのとき、trueを返す。 |
| xor | 排他的論理和 | 左辺と右辺のどちらかがtrueで、かつ、どちらもtrueでないとき、trueを返す。 |
| ! | 否定(NOT) | trueのときはfalse、falseのときはtrueを返す。 |
| and | 論理積(AND) | 左辺と右辺が両方ともtrueのとき、trueを返す。 |
| or | 論理和(OR) | 左辺と右辺のどちらかがtrueのとき、trueを返す。 |
論理積(&&)
$gender = '男性';
$age = 20;
// if ($gender == '男性') {
// if ($age == 20) {
// echo '男性で20歳ですね?';
// }
// }
if ($gender == '男性' && $age == 20) {
echo '男性で20歳ですね?';
}
論理和(||)
if ($gender == '男性' || $age == 20) {
echo '男性かまたは、20歳ですね?';
}
排他的論理和(xor)
if ($gender == '男性' xor $age == 20) {
echo '20歳ではない男性か、20歳の女性ですね?';
}