PHPの基本文法やサンプルプログラムを入門者向けに解説しています。
【PHPとは】できること、環境構築・プログラムの書き方
PHPとは、プログラミング言語の1つです。
サーバー側で処理され、Webサイトの構築などに利用されています。
有名所では、WordPressもPHPで動作しています。


環境構築方法やプログラムの書き方、実行方法についてまとめました。

PHPは、JavaScriptのようにHTML内に記述します。
プログラムを挿入する場所は以下の開始記号と終了記号の間となります。
書式
<? プログラムを挿入 ?>
他の記号
上記以外にも
<pre language="PHP"> ~ </pre> <?php ~ ?>
も使用できます。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>サンプル</title> </head> <body> <?php ここにプログラムを記述 ?> </body> </html>

PHP言語では、「echo」もしくは「print」を用いることで文字列を出力できます。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>サンプル</title> </head> <body> <?php print 'やっぱりここって<br>田舎なのん'; echo 'やっぱりここって<br>田舎なのん'; ?> </body> </html>

ちなみに、シングルクォーテーション(‘)では、変数やエスケープ文字をそのまま表示します。
一方、ダブルクォーテーション(“)は展開(中身を取り出して)表示します。

【変数】データ型の種類、確認、エイリアス
PHPのデータ型では、変数の値にboolean(論理型)、integer(整数型)、double(浮動小数点数型)、string(文字列型)、array(配列型)、object(オブジェクト型)、resource、NULL、unknown typeなどがあります。
【書式】
$変数名 = 値;
※変数名には任意の文字列を指定します。
ただし、利用できる文字列は先頭がアンダーバーかアルファベットで始まり、その後にアンダーバー、数字、アルファベットが続くものとなります。

print文で変数の値(中身)を出力できます。

PHPでは、gettype関数を使うことで、変数に格納されている値の型を取得できます。

NULL型は、値が無いことを示す値の型です。
変数の値をNULL型にすることを「変数の初期化」といいます。

演算子「=&」で、右辺にある変数のエイリアス(別名)として左辺の変数を設定します。
※エイリアスとは別名のことです
これにより、左辺の変数名(別名)で右辺の変数にアクセスできます。

【文字列型】連結、長さ取得、型変換
演算子「.」で複数の文字列を連結します。
【構造化】条件分岐、繰り返し、関数
構造化プログラミングとは、プログラムを書く時の基本的な技法の1つです。
構造化プログラミングでは、標準的な制御構造のみを用いて、プログラム全体を段階的に分割して処理を書きます。
それにより「読みやすい」「理解しやすい」「修正しやすい」プログラムを作ることが出来ます。
標準的な制御構造は、主に「順次構造」「反復構造」「選択構造」があります。
種類 | 説明 |
---|---|
順次構造 | 処理が上から下へ順に実行されていく構造のことです。 |
反復構造 | 同じ処理を繰り返し行うプログラム構造のことです。 別名、ループ構造ともいいます。 (for、while、do while など) |
選択構造 | 指定した条件により、2つ以上の処理のうち、1つを選択するプログラム構造のことです。 別名、分岐構造ともいいます。 (if、else if、switch文など) |

if、else if、else文を使って複数の条件分岐を使って処理を分けることが出来ます。
その書式は以下の通りです。
【書式】
「条件式1」が真であれば「文1」を実行して終了します。(他の条件式・文はスキップ)
偽であった場合は、次の条件式2が真であれば「文2」を実行して終了します。
以降、同じ処理を繰り返していきます。
全ての条件式が偽の場合は文nを実行して終了します。
このように、elise if文の数だけ条件分岐を増やすことが出来ます。

switch文
switch文は、多分岐を行うための選択文です。
評価する対象がすべて同じ場合に使います
【書式】
switch (条件式) { case 定数式1: 文; case 定数式2: 文2; ︙ case 定数式n: 文n; default: 文n+1; }
switch文は、条件式の値と同じ定数式を持つcase以下を”全て”実行します。
どの定数式とも異なる場合は、default以下(文n+1)だけ実行します。
※1. default:と文n+1は省略可能
※2. 条件式と定数式1~nは整数型(int型)にする必要があります。
※3. defaultが2つ書いたり、定数式1~nに同じ値を設定するとエラーになります。

for文
for文は、同じ処理を繰り返しおこないます。
反復の条件(初期化・条件式・後処理)を1つの文で書くことができます。
【書式】
for (初期化; 条件式; 後処理) { 文; }
【条件式】
関係演算子や論理演算子など、結果として論理値が得られる演算を記述します。
【後処理】
後処理には、増分・減分演算子が用いられることが多いです。
【for文の処理】
①始めに初期化を1度だけ実行する。
②条件式が「真」か「偽」か調べる。
③真の場合・・・「文」を実行し、その後「後処理」を実行する。そして②へ戻る。
③偽の場合・・・反復を終了して次の処理へ進む。
条件式が偽になるまで文と後処理が実行され続けます。
通常は、後処理で反復回数を制御します。

while文
while文とは、同じ処理を繰り返しおこなう場合に使います。
【書式】
while (条件式) { 文; }
【条件式】
関係演算子や論理演算子など、結果として論理値が得られる演算を記述します。
【while文の処理】
①条件式が「真」ならば文を実行します。
②文の処理が終わると、再び条件式が「真」かどうか調べる。
・真なら①に戻る。
・偽なら反復を終了して次の処理へ進む。
※真偽
真・・・条件式を満たしている状態
偽・・・条件式を満たしていない状態

do while文
do while文とは、同じ処理を繰り返しおこなう場合に使います。
while文は、始めに条件式が「真」か「偽」か調べてから文を実行します。
do while文では、始めに文を実行してから「真」か「偽」か調べます。
そのため、while文ははじめから「偽」だった場合は文を1度も実行しないまま反復処理を終了しますが、do while文ではそのようなことがありません。
【書式】
do while { 文; } (条件式);
【条件式】
関係演算子や論理演算子など、結果として論理値が得られる演算を記述します。
【do while文の処理】
①文を実行します。
②条件式が「真」かどうか調べる。
・真なら①に戻る。
・偽なら反復を終了して次の処理へ進む。
※真偽
真・・・条件式を満たしている状態
偽・・・条件式を満たしていない状態

foreach文
foreach文とは、配列の要素数だけ繰り返し処理を行える文です。
配列の要素値を1つずつ取り出す際に便利です。
【書式】
foreach ($配列名 as $変数名){ { 文; }
【処理内容】
①$配列名に指定した配列の要素数だけ繰り返し処理が発生
②1回繰り返しが行われる毎に、$変数名に指定した変数に、要素の値が代入されていきます。
(例)2回目の繰り返し処理中は、変数に2番目の要素値が入る

ローカル変数
括弧{ }で囲まれた部分をブロックといいます。
ローカル変数は、ブロック内{}で囲まれた関数内のみで有効になる変数です。

グローバル変数
括弧{ }で囲まれた部分をブロックといいます。
グローバル変数は、ブロック内{}で囲まれた関数の外でも有効になる変数です。
変数をグローバル変数として宣言するには「global $変数名;」とします。

関数
関数とは、「処理のまとまり」のことです。
簡単なプログラムは1つの関数の中だけに処理を記述してきました。
しかし、プログラムが長くなる場合は、読みやすくするために「処理ごとに関数を分けて記述」します。
そのようにユーザーが自分で作った関数を「ユーザ関数」といいます。
ユーザ関数は、変数や配列と同様にあらかじめ宣言する必要があります。
関数を宣言する際の書式は下記の通りです。
【書式】
function 関数名( ) { ここに処理を記述; }
ユーザー関数を使う(呼び出す)場合は、使いたい場所に「関数名( );」を記述します。

【配列】1次元配列、多次元配列、連想配列、ソート
配列(Array)とは、同じ型のデータを(メモリ上に)一列に並べたものです。
プログラミングでは大量のデータを扱う場合によく用いられます。
変数と配列との違いを住宅で例えると下記の通りです。
– | 説明 |
---|---|
変数 | 変数とは、住宅で例えると「一軒家」のようなものです。 変数1つ1つにバラバラの住所があります。 下の画像の例ならEnglish、Math、Sscienceという3つの世帯(実際はint型のデータ)がバラバラの住所(実際はメモリ番地)に存在します。 ![]() |
配列 | 一方、配列とはマンションのようなものです。1つの住所に複数の世帯が住んでいます。下の画像の例ならScoreというマンション(配列)に3つの世帯(実際はint型のデータ)が1つの住所(実際は連続するメモリ番地)に格納されています。![]() |
配列の用語
– | 説明 |
---|---|
配列要素 | 配列内のデータ1つずつのことです。先程のマンションで例でいうと、Score[0]、Score[1]、Score[2]の中にあるint型のデータを指します、 |
添え字 | 配列要素を区別するための番号( [0]、[1]、[2]…)のことです。配列番号や要素番号ともいいます。 |
要素数 | 配列の要素の数です。下画像の例なら、配列Scoreの要素数は3となります。(Score[0]、Score[1]、Score[2]の3つあるから) |

配列の宣言
配列の宣言方法は以下の通りです。
【書式】
$配列名 array();
変数を宣言する際に、同時に各要素に初期値を与えることができます。
これを「配列の初期化」といいます。
【書式】
$配列名 = array(初期値1, 初期値2, …, 初期値n);
※array()の括弧内にカンマ区切りで要素を入れます。
配列内の各要素に値を入れることを「代入」といいます。
【書式】
$配列名[要素番号] = 値;
【注意】
配列の要素を指定する要素番号(添え字の数)は0から始まります。
例) 最初は0番目なので配列名[0]
「50 97 78」が表示されます。
(0番目の要素だけ初期値でなく代入された値50となります)

2次元配列
通常の配列は、データを1列に並べるため、1次元配列です。
それに対して、2次元配列は縦横の2次元で配列を考えます。
2次元で配列を考えると、ゲームマップ、画像、データベースなど、2次元のデータを扱う際には非常に便利です。
PHPでは、array関数をネスト(入れ子)することで2次元配列を作れます。
【書式】
配列 = array(配列1, 配列2, .... , 配列N);

連想配列
連想配列とは、キーを指定して、値を設定する配列です。
ハッシュテーブルとも呼ばれます。
通常の配列では、要素の指定を「数字(インデックス)」で行います。
連想配列では、要素の指定を「文字列」で行います。
各要素の値に対するキーの割り当ては演算子=>で行います。
【書式】
キー => 要素
「駆逐艦」をキーとして、配列から「吹雪改二」を取得しています。

PHPでは、count関数で配列の要素数(長さ)を求めることができます。

is_array関数で変数が配列かどうかを求めることができます。
【書式】
is_array(配列名)

implode関数で配列の各要素を連結し、1つの文字列に変換できます。
【書式】
implode (区切り文字 , $配列名)

array_pop関数で配列の先頭からデータを取り出すことができます。
(配列の末尾要素を除去)
これをpop(ポップ)操作といいます。

array_push関数で配列の先頭にデータを追加することができます。
これをpush(プッシュ)操作といいます。

array_reverse関数で配列の順序を逆にすることができます。
【書式】
array_reverse($配列名)

array_shift関数で配列の先頭要素を削除できます。
【書式】
array_shift($配列名)

array_slice関数を用いることで、配列の要素の一部を取り出すことができます。
【書式】
array_slice($配列名 , n);
先頭からn+1番目以降の要素を取得
配列のソート

asort関数を用いることで、配列の昇順ソートができます。

arsort関数を用いることで、配列の降順ソートができます。

ksort関数を用いることで、連想配列をキーの値で昇順ソートできます。

krsort関数を用いることで、連想配列をキーの値で降順ソートできます。

shuffle関数を用いることで、配列の要素をランダムに並び替えできます。

【オブジェクト指向】
オブジェクト指向でプログラムを設計するメリットは次の通りです。
– | メリット |
---|---|
1 | 大規模なプログラムを書きやすい |
2 | プログラムの柔軟性が高い(仕様変更・再利用しやすい) |
3 | 綺麗に書けば理解しやすいプログラムを書ける |
オブジェクト指向でプログラムを設計するデメリットは次の通りです。
– | メリット |
---|---|
1 | プログラム設計に時間が掛かりやすい |
2 | プログラムの処理時間が長くなる |
3 | 綺麗に書かないと理解しにくいプログラムになる |
一般的にオブジェクト指向プログラミングは大規模なプログラムを作る場合に向いているとされています。
逆に小規模なプログラムの場合は、関数型で設計するのが向いています。

PHPでは、class文を用いてクラスを定義します。
class文でクラス定義する書式は下記の通りです。
【書式】
class クラス名{ }

インスタンス生成する書式は下記の通りです。
【書式】
$変数名 = new クラス名();
※変数名がインスタンス(実体)となります。
(クラスは設計図)

インスタンス変数とは、インスタンス内のみで使えるローカル変数です。
メンバ変数とも呼ばれます。
PHPでは、インスタンス変数の宣言にアクセス修飾子を使います。
(アクセス修飾子の違いでアクセスできる範囲が変わります)
アクセス修飾子 | 内容 |
---|---|
public | クラス内・クラス外のどこからもアクセス可能 |
private | クラス内のみアクセス可能 |
protected | クラス・子クラスのみアクセス可能 |

インスタンス変数とは、インスタンス内のみで使えるローカル変数です。
メンバ変数とも呼ばれます。
PHPでインスタンス変数の値を取得する場合の書式は以下の通りです。
【書式】
$変数名 = $インスタンス名->インスタンス変数名;

インスタンス変数へ値を代入・アクセスする書式は以下の通りです。
【書式】
$インスタンス名.インスタンス変数名 = 値 ;

インスタンス変数への代入を行った時、クラス定義時に宣言されていなかった場合でも自動的に生成してくれます。
これによりインスタンス変数を外部から追加することができます。

インスタンスの生成時にインスタンス変数に値をセット(初期化)できます。
これを行うクラス内のメソッドをコンストラクタ(初期化メソッド) といいます。

メソッド(method)とは、クラスが持つ関数のことです。
メソッドには操作・処理の内容を記述します。
PHPでは、class文中に以下の書式でメソッドを記述できます。
【書式】
function メソッド名(引数){ 処理を記述; }
メソッドの呼び出しは次のように行います。
【呼び出し】
$インスタンス名->メソッド名();


【数値計算】四則演算・演算子・統計量
算術演算子とは、足し算(加算)、引き算(減算)、掛け算(乗算)、割り算等(除算)を行うために使う演算子です。
つまり、これを使うことで色々な計算が出来ます。
– | 算術演算子の一覧 |
---|---|
+ | 足し算 ($x + $y なら xとyを足す) |
– | 引き算 ($x – $y なら xからyを引く) |
* | 掛け算 ($x * $y ならにyをかける) |
/ | 割り算 ($x / $y なら xをyで割る) |
% | 余り ($x % $y なら xをyで割った余りを求める) |
※整数を割り算(/)した場合、小数点以下は切り捨てられます。

複合代入演算子
複合代入演算子は下記の通りです。
種類 | 内容 | 例 | 実行結果 |
---|---|---|---|
+= | 足し算の結果を代入 | $y += $x | $y = $y + $x と同じ |
-= | 引き算の結果を代入 | $y -= $x | $y = $y – $x と同じ |
*= | 掛け算の結果を代入 | $y *= $x | $y = $y * $x と同じ |
/= | 割り算の結果を代入 | $y /= $x | $y = $y / $x と同じ |
%= | 割り算の余りを代入 | $y %= $x | $y = $y % $x と同じ |

増分・減分演算子
増分・減分演算子を使うことで、簡単な書き方で四則演算を実行できます。
for文などループ回数をカウントする際によく使われます。
種類 | 書式 | 例 | 実行結果 |
---|---|---|---|
後置増分 | $i++ | $j=$i++ | iをjに代入した後、iを1増やす |
後置減分 | $i– | $j=$i++ | iをjに代入した後、iを1減らす |
前置増分 | ++$i | $j=$i++ | iを1増やした後、jに代入 |
前置減分 | –$i | $j=$i++ | iを1減らした後、jに代入 |

論理演算を行うために次のような論理演算子が用意されています。
否定 NOT
記号は「~」で、各ビットが反転されます。
(使用例) ~$a
左シフト
記号は「<<」で、ビット列を左にずらします。(余ったところは0で埋められます)
2進数の世界では、2倍することと同等の意味を持ちます。
[使用例] 0011 << 1 [結果] 0110 ( 3<<1 = 6となり、これは2倍するのと同じ)
右シフト
ビット列を右にずらします。(余ったところは0で埋められる)
2進数では2で割るのと同等の意味を持ちます。
[使用例] 0011 >> 1 [結果] 0001
( 3 >> 1 = 1となり、これは2で割るのと同じ)
論理積( X AND Y )
$x & $y と表記します。
[使用例] 1110 & 1010 [結果] 0010
論理和は、組み込み系では長いビット列の一部分を取り出すのによく使われます。
例えば、「10100011」という測定機器からの出力があり、第3ビット目だけの情報が欲しい時には00100000との論理積を取って、0かそれ以外かを判定するという手法を使います。
論理和(X OR Y)
$x | $y と記述します。
[使用例] 1110 | 0010 [結果] 1110
排他的論理和(X XOR Y)
$x ^ $yと記述します。

比較演算子
比較演算子とは、その名の通り、演算子の左辺と右辺を比較して、等しいか田舎や大小の判定を行います。
そして、判定結果として真(true)か偽(false)の値を取ります。
比較演算子は関係演算子とも呼ばれています。
– | 比較演算子リスト |
---|---|
< | 小なり ($x < $y なら xはyより小さい) |
<= | 小なりイコール ($x <= $y なら xはy以下) |
> | 大なり ($x > $y xはyより大きい) |
>= | 大なりイコール ($x >= $y なら xはy以上) |
== | イコール ($x == $y なら xとyは等しい) |
!= | ノットイコール ($x != $y なら xとyは等しくない) |
※1 「>=」を「=>」と入力してしまうとエラーになるので注意しましょう。
※2 比較の「==」と代入の「=」はよく間違えるので注意しましょう。

条件演算子
条件演算子とは、条件によって異なる値を返す演算子です。
被演算子が3つので、3項演算子とも呼ばれています。
? : ・・・
「$x ? $y : $z」 の場合、$xが真なら$yを実行します。
$xが偽なら$zが実行されます。
【使用例】
$x = ($x > 5) ?$ num + 1 : 0;
$xが5以上なら$numが+1されます。
そうでなければ何もしません。
if文でも同様の処理を作れますが、上記のように条件演算子を使うことでコンパクトに記述できます。

PHPでは、array_sum関数で合計値を計算できます。
また、count関数(要素数の計算)を用いることで、平均値も出せます。
最大値と最小値はそれぞれmax, min関数を使います。

【Webアプリ制作】基本操作、データベース管理、Laravel




コメント