筆者はPHP初心者です。なるべく間違いがないよう尽くしましたが、間違っていた場合はご指摘お願います。
文法
文字列はシングルもしくは、ダブルクォーテーションで囲む※「echo」は文字列を出力するための命令
<?php
echo 'こんにちは'; //出力結果:こんにちは
echo "こんばんは"; //出力結果:こんばんは
計算式と数値
数字をクォーテーションで囲むと、文字列として表示される。
<?php
echo '5 + 3'; //結果:5 + 3
echo 5 + 3; //結果:8
echo 5 - 3; //結果:2
echo 4 * 2; //結果:8
echo 4 / 2; //結果:2
echo 9 % 2; //結果:1
echo 5 + 3; //結果:8
変数
変数とはプログラミング言語における値を入れておく箱のこと。頭に「\$」をつけることで変数を定義する。「$変数名 = 値;」で様々な値を変数に入れることが出来る。「=」は右辺を左辺に代入するという意味。
<?php
$lenght = 3 * 3; //「$lenght」=変数名、「3 * 3」=値
echo $lenght; //結果:9
<?php
$lenght = 3 * 3;
$area = $lenght * $lenght;
echo $area; //結果:81
変数の更新
変数に、その後再び値を代入すると、後で代入した値によって変数の中身が上書きされる。
<?php
$num = 3;
$num = 8;
echo $num; //結果:8
変数に数字を足す
変数に数字を足したいときは、変数に数字を足した後、変数に再び代入する。
$num = 3;
$num = $num + 10;
echo $num; //結果:13
計算式の省略
計算式は、下記のような省略した書き方もできる。
省略前 省略後
$x = $x + 2; $x += 2;
$x = $x - 2; $x -= 2;
$x = $x * 2; $x *= 2;
$x = $x / 2; $x /= 2;
$x = $x % 2; $x %= 2;
値が1の時だけ、さらに省略して書ける
省略前 省略後
$x += 1; $x++;
$x -= 1; $x--;
文字列の連結(ドット「.」)
ドット「.」記号を用いると文字列を連結することが出来る。何も付けないで実行すると、構文エラーになる。
<?php
$name = '田中';
echo $name . 'さん'; //結果:田中さん
「.=」を用いると変数と文字列の連結を省略して書くことが出来る。
<?php
$name = '田中';
$name .= 'さん';
echo $name; //結果:田中さん
変数展開
ダブルクォーテーションで文字列を囲んだ場合、中の変数を{}で囲むとその部分が変数に入っている値で置き換えられる。
ダブルクォーテーションで文字列を囲んだ場合
$name = '田中';
echo "おはよう、{$name}さん"; //結果:おはよう、田中さん
シングルクォーテーションで文字列を囲んだ場合は変数展開されず、変数が{}で囲まれていてもそのまま文字列としてみなされる。
シングルクォーテーションで文字列を囲んだ場合
$name = '田中';
echo 'おはよう、{$name}さん'; //結果:おはよう、{$name}さん
if文(条件の分岐)
if文を用いると「もし○○ならば○○を行う」という条件分岐が可能になる。条件が成り立つ場合のみ、{}の中の処理が実行される。
以下は「もし、xは5より大きければ処理が実行される」という意味。
$x = 10;
if($x > 5){
echo '$xは5より大きい';
} //結果:$xは5より大きい
真偽値
「true(真)」「false(偽)」2つの値がある
a == b //aとbが等しければtrue
a !== b //aとbが等しくなければtrue
a < b //aの方がbより小さいときtrue
a > b //aの方がbより大きいときtrue
a <= b //aの方がbより小さいまたは等しいときtrue
a >= b //aの方がbより大きいまたは等しいときtrue
else
elseは「もし○○なら○○を行う、そうでなければxxを行う」という処理ができるようになる。elseは日本語で「別の方法で、他に」の意味を持つ。
<?php
$x = 2;
if($x > 5){
echo '$xは5より大きい';
} else {
echo '$xは5より小さい';
} //結果:$xは5より小さい
elseif
elseifは「もし○○なら○○を行う、そうでなければxxを行う。どちらでもなければ△△を行う」という処理ができるようになる。
<?php
$x = 5;
if($x > 5){
echo '$xは5より大きい';
} elseif ($x < 5) {
echo '$xは5より小さい';
} else {
echo '$xは5と等しい';
} //結果:$xは5と等しい
論理演算子「&&」「||」
&&(かつ)は、左右の式がともにtrueの場合に処理が実行される。
<?php
$x = 2;
if($x < 5 && $x > 1){
echo '$xは5より小さい、かつ1より大きい';
} //結果:$xは5より小さい、かつ1より大きい
||(または)は左右の式のどちらか、もしくは両方がtrueの場合に処理が実行される。
<?php
$x = 2;
if($x > 5 || $x > 1){
echo '$xは5より大きい、または1より大きい';
} //結果:$xは5より大きい、または1より大きい
switch文(複雑な条件分岐をシンプルに)
if文による分岐が多く複雑な場合に使われる。変数がcaseの値と一致したとき、そのブロックが実行される。caseのどれにも一致しなかった場合は、defaultのブロックが実行される。
<?php
$num = 5;
switch ($num) {
case 8:
echo "numは8";
break;
case 5:
echo "numは5";
break;
case 2:
echo "numは2";
break;
default:
echo "numは12";
break;
} //結果:numは5
配列
配列を用いると複数の値をまとめて扱うことができる。書き方は「$配列名[] = 値;」のようにする。また、下記の[0][1][2]はインデックス番号という。インデックス番号は0から始まる。
<?php
$animal = array ('猫', '犬', '猿');
echo $animal[0]; //猫
echo $animal[1]; //犬
echo $animal[2]; //猿
配列を使わない場合はこうなる
<?php
$animal1 = '猫';
$animal2 = '犬';
$animal3 = '猿';
echo $animal1; //猫
echo $animal2; //犬
echo $animal3; //猿
連想配列
連想配列は個々の要素は、インデックス番号ではなく「キー」という文字列などの値を指定することができる。下記の例をみると連想配列はインデックスが数値ではなく、文字列に変わることがわかる。今回の場合、キーは「鈴木」になる。
<?php
$age = array(
'田中' => 24,
'鈴木' => 36,
'山崎' => 29,
);
echo $age['鈴木'].'歳'; //結果:36歳
配列の場合はこうなる
<?php
$age = array (24, 36, 29);
echo $age[1].'歳'; //結果:36歳
多次元配列
二次元配列以上の配列のこと。
<?php
$profiles = array(
'tanaka' => array(
'age' => 28,
'hometown' => '北海道',
'sex' => '男性'
),
'suzuki' => array(
'age' => 33,
'hometown' => '東京',
'sex' => '女性'
)
);
echo '田中さん:'.$profiles['tanaka']['age'].'歳'; //田中さん:28歳
echo '田中さん:'.$profiles['tanaka']['sex']; //田中さん:男性
echo '鈴木さん:'.$profiles['suzuki']['hometown']; //鈴木さん:東京
for文(繰り返し処理)
下記はfor文を用いて、1から10までの数字を繰り返し処理で出力している。echoで1から10まで書くよりも楽に記述することができる。
<?php
for ($i = 1; $i <= 10; $i++) {
echo $i;
} //結果:12345678910
while文(繰り返し処理)
for文と同様、繰り返し処理の一つ。
<?php
$i = 1;
while ($i <= 10) {
echo $i;
$i++;
} //結果:12345678910
for文とwhile文の使い分け
繰り返す回数が決まっているときは「for文」、決まっていないときは「while文」を使う。例えば、「○回実行したら終わり」など処理を止めるタイミングが予め決まっている場合は「for文」。何かボタンを押したタイミングなど、「条件ごとに値を処理をしたい」場合は「while文」を使う。※更に詳しい内容は長くなるので割愛
break文
for文などの繰り返し文の中で、ループを強制的に中断する命令ができる。下記は値が7になった時点で処理が終了になる。
<?php
for ($i=1; $i <= 10; $i++) {
if ($i > 6) {
break;
}
echo $i;
} //結果:123456
break文がない場合はこうなる
<?php
for ($i = 1; $i <= 10; $i++) {
echo $i;
} //結果:12345678910
continue文
continue文は現在の周だけをスキップし、ループそのものは継続して実行する。下記は2の倍数のとき、そのループは終了し、次のループを実行している。
<?php
for ($i=1; $i <= 10; $i++) {
if ($i % 2 == 0) {
continue;
}
echo $i;
} //結果:13579
continue文がない場合はこうなる
<?php
for ($i = 1; $i <= 10; $i++) {
echo $i;
} //結果:12345678910
foreach文
配列や連想配列に対し、先頭から順に繰り返し処理を行う。asの後ろの変数に、ループの度にデータが先頭から順に代入されていく。
配列
<?php
$animal = array('猫','犬','猿');
foreach ($animal as $value) {
echo $value;
} //結果:猫犬猿
連想配列
<?php
$animal = array(
'猫' => 'cat',
'犬' => 'dog',
'猿' => 'monkey'
);
foreach ($animal as $japanese => $english) {
echo $japanese.':'.$english;
} //結果:猫:cat犬:dog猿:monkey
関数
処理をひとまとめに定義して、使い回す際に使う。次の「strlen」と「date」は関数の一部。
strlen関数(文字列の長さを取得する)
文字列の文字数を返す関数。読み方は、ストラレンと読むらしい。
<?php
echo strlen('dog'); //結果:3
date関数(日付と時刻を取得する)
下記は日本の現在の日付を時刻を出力している。「Y」は年。「m」は月。「d」は日。「H」は時。「i」は分を表す。半角や全角によって表示される桁数が違う場合がある。
<?php
date_default_timezone_set('Asia/Tokyo');
echo date("Y年m月d日H時i分");//結果(例): 2017年01月01日00時00分
自作関数(ユーザー定義関数)
関数を作るには「function 関数名(){ 処理 }」という書き方をする。
<?php
function animal() {
echo 'cat';
}
animal(); //結果:cat
引数
関数を呼び出す際、関数に値を渡すと、関数内でその値を利用することができる。この値を引数と言う。
<?php
function animal($name) {
echo 'この動物は' . $name . 'です。';
}
animal('猫'); //結果:この動物は猫です。
animal('犬'); //結果:この動物は犬です。
animal('猿'); //結果:この動物は猿です。
上記の例を具体的にすると・・・関数を呼び出す際、関数(animal)に値(\$name)を渡すと、関数内でその値を利用することができる。この値($name)を引数と言う。
第一引数,第二引数
下記の例でいくと「\$first_name」が第一引数、「$second_name」が第二引数。
<?php
function animal($first_name,$second_name) {
echo '私が昨日見た動物は' . $first_name . 'と' . $second_name . 'です。';
}
animal('クマ','ワニ'); //結果:私が昨日見た動物はクマとワニです。
animal('ペンギン','パンダ'); //結果:私が昨日見た動物はペンギンとパンダです。
戻り値
関数から戻ってくる値のこと。関数helloの処理結果をreturnで返している。
function hello($name){
return "こんにちは、${name}さん";
}
echo hello("田中"); //こんにちは、田中さん
return無しの場合はこうなる
function hello($name){
echo "こんにちは、${name}さん";
}
hello("田中"); //こんにちは、田中さん
オブジェクト指向
オブジェクトは「もの」、指向は「中心に」という意味。つまり、ものを中心にした考え方ということ。 例えば、ショッピングサイトには「商品・ユーザー・購入履歴・カート」など、さまざまな物事が存在する。この物事について各クラスを作る。
▼例えば商品クラスには、商品に必要な性質や処理を持たせる。
・性質「名前」「価格」「品番」など
・処理「商品名を変更する」「値下げを適用する」など
これがものを中心にした考え方の簡単なイメージ。
用語まとめ
- echo(文字列などを出力するための命令。関数ではない)
- 変数(使い回しができる、データの入れ物。頭に「$」をつける)
- 代入(右辺を左辺に置き換えること。「=」で表す)
- 値(文字や式などが指す数値のこと)
- if文(条件に応じて処理を分岐することができるもの)
- 比較演算子(「<」や「>」のような2つの値を比較する記号のこと)
- 真偽値(比較した結果の値。「true:真」または「false:偽」を返す)
- else(「もし○なら○を行う、そうでなければxを行う」という処理。ifと組み合わせる)
- elseif(「もし○なら○を行う、そうでなければxを行う。どちらでもなければ△を行う」という処理)
- 論理演算子(複数の条件を1つにまとめる時に使う。「&&」と「||」の記号で表す)
- switch文(if文による分岐が多く複雑な場合に使われる)
- 配列(ひとつの箱に複数の値を入れることができるもの)
- array(配列を意味している。PHPでの配列の定義方法で「アレイ」と読む)
- 連想配列(配列と同じような用途で使われる。連想配列はインデックス番号ではなく、「キー」と呼ばれる文字列などの値を指定することが可能)
- 多次元配列(二次元配列以上の配列のこと)
- for文(繰り返しする処理を実行できる。基本、繰り返す回数が決まっているときに使う)
- while文(繰り返しする処理を実行できる。基本、繰り返す回数が決まっていないときに使う)
- break文(for,while,foreachなどのループを強制的に中断する命令)
- continue文(forなどと一緒に使う。現在の周だけをスキップし、ループそのものは継続して実行する)
- foreach文(forなどと一緒に使う。配列や連想配列に対し、先頭から順に繰り返し処理を行う。asの後ろの変数に、ループの度にデータが先頭から順に代入されていく)
- 関数(処理をひとまとめに定義して、使い回す際に使う)
- 自作関数、ユーザー定義関数(自分でつくった関数。関数名を決めることができる)
- 引数(関数に渡す値のこと。関数を呼び出す際、関数に値を渡すと、関数内でその値を利用することができる)
- 戻り値(関数から戻ってくる値のこと)