PHPの基礎知識まとめ

いつもぼんやりとPHPを扱ってきたのですが、今回1週間でPHPの基礎が学べる本を読む機会があったので、初めて基礎から勉強しました。

書籍はKindle Unlimitedで読み放題だったので、実質無料です。
※良本だったので後日、書籍を購入しました。

メモがわりにポイントをまとめておきます。

目次

PHPで扱えるデータ型

スクロールできます
名前概要
論理値(bool)論理の真(true)もしくは偽(false)の2種類true、false
整数(int)整数の値-1、100、0など
浮動小数点数(float、もしくはdouble)小数点の付いた数値-8.27、0.0、5.89
文字列(string)文字列。"(ダブルクオート)もしくは'(シングルクオート)で囲む“PHP”、’Hello’

ヒアドキュメント

複数行にわたるHTMLをechoで表示する場合、ヒアドキュメントが便利です。

<<<の後にIDを指定し、文字列を書いたあと、 同じ ID (終端ID) で閉じます。

echo <<<DATA
Hello World
こんにちは
DATA;

// 結果
Hello World
こんにちは

ID名は、EOM(End Of Message)やEOD(End Of Document)などがよく使われていますが、意味が伝われば何でも構いません。

インデントに関しては、スペースとタブを混在させたり、終端IDを本文よりも深くしないように注意が必要です。

複合代入演算子

演算子記述例意味該当する演算
+=$a += $b$aに$bの値を加算して代入$a = $a + $b
-=$a -= $b$aに$bの値を減算して代入$a = $a – $b
*=$a *= $b$aに$bの値を乗算して代入$a = $a * $b
/=$a /= $b$aに$bの値を除算して代入$a = $a / $b
%=$a %= $b$aに$bとの剰余演算の結果を代入$a = $a % $b
.=$a .= $b$aに$bの値を連結して代入(文字列として扱われる)$a = $a . $b

HTMLの特殊文字

echoなどで特殊文字を表示させる場合は、& ;を使った文字で表現します。

表示される文字特殊文字の表現
半角スペース&nbsp;
<&lt;
>&gt;
&quot;
&&amp;
©︎&copy;
¥&yen;

©は「まるしー」を打って変換するか、Macのショートカットキー「option + G」で変換。

インクリメント・デクリメント

変数の前後どちらかに++をつけた処理をインクリメントといい、対象の変数の値に1を加えます。

また変数の前後どちらかに--をつけた処理をデクリメントといい、対象の変数の値に1を引きます。

$n = 10;

// インクリメント($n += 1;と同じ処理)
$n++; // 結果:$n = 11
++$n; // 結果:$n = 12

// デクリメント($n -= 1;と同じ処理)
$n--; // 結果:$n = 11
--$n; // 結果:$n = 10

文字列の扱い

ダブルクォーテーションとシングルクォーテーションの違い

両者の違いは、変数が展開されるかどうかです。

シングルクォーテーション内では変数は展開されず、そのまま文字列として扱われます。

  • ダブルクォーテーション(” “):変数が展開される
  • シングルクォーテーション(’ ‘):変数は文字列として扱われる
$n = 10;

echo '$n'; // 結果:$n
echo "$n"; // 結果:10

変数の展開が不要な場合は、処理速度がわずかに速いシングルクォーテーションを使うほうが効率的です。

変数の展開

変数の後に文字列が続くと、どこまでが変数名か判別できず、エラーが発生することがあります。

このような場合、変数を波括弧{}で囲むことで、変数名の境界を明確にできます。

$n = 10;

echo "$nです。";   // 結果:Warning: Undefined variable $nです。
echo "{$n}です。"; // 結果:10です。

保守性や可読性の面でも、波括弧で囲っておくと安心です。

※ヒアドキュメントの中でも{}を使って変数を展開することができます。

エスケープシーケンス

特定の文字の前にバックスラッシュ\を付けるとエスケープシーケンスとして扱われます。

エスケープシーケンスを使うと、変数を展開することなく、文字列として表示することができます。

$n = 10;

echo "$n = {$n}です。";  // 結果:10 = 10です。
echo "\$n = {$n}です。"; // 結果:$n = 10 です。

他にも、改行や特殊文字を表現したりするときに使います。

エスケープシーケンス意味
\n改行
\rキャリッジリターン
\tタブ
\\\
\$$
\((
\))
\[[
\]]
\’シングルクォーテーション
\”ダブルクォーテーション

文字列の結合

変数や文字列を連結するには、結合演算子.を使います。

以下は「シングルクォーテーション」+「結合演算子」で連結した例です。

$n = 10;

echo '値は' . $n . 'です。'; // 結果:値は10です。

この方法なら、変数名の曖昧さを避けられる上に、展開処理が行われないため、わずかに処理が速くなります。

また、結合代入演算子.=を使えば、文字列の後ろに別の文字列を追加することも可能です。

$n = 10;
$n .= 'です。';

echo $n; // 結果:10です。

switch文

条件分岐の一種ですが、基本的にはif文を使うことが多いので使うことはほぼありません。

switch(値) {
  case 値1:
    // 処理
   break; // 処理を抜ける
  case 値2:
    // 処理
   break; // 処理を抜ける
  default:
    // どれも該当しないときの処理(defaultは省略することも可能)
}

使用例。

$fruit = 'apple';

switch ($fruit) {
  case 'apple':
    echo "りんごです。";
    break;
  case 'banana':
    echo "バナナです。";
    break;
  default:
    echo "どれでもありません。";
}

繰り返し処理

for文

// for (初期化処理; 条件式; 増分処理) 
for ($i = 0; $i <=3; $i++) {
  echo '$iの値は' . $i . 'です<br>';
}

// 結果
$iの値は0です
$iの値は1です
$iの値は2です
$iの値は3です
記述例$iの変化説明
for ($i = 0; $i < 10; $i+=2)0 2 4 82ずつ増加させる
for ($i = 2; $i >= -2; $i–)2 1 0 -1 -22から-2まで1つずつ減少

while文

$i = 0;
while ($i <= 3) {
  echo '$iの値は' . $i . 'です<br>';
  $i++;
}

// 結果
$iの値は0です
$iの値は1です
$iの値は2です
$iの値は3です

条件が満たされないと処理は実行されません。

do〜while文

$i = 0;
do {
  eho '$iの値は' . $i . 'です<br>';
  $++;
} while($i <= 3);

// 結果
$iの値は0です
$iの値は1です
$iの値は2です
$iの値は3です

最初に処理をしてから条件判定を行なっているため、条件を満たしていない場合でも一度は処理が実行されます

配列の基本

count:配列の要素数を取得

count関数で、配列の要素数を取得することができます。

$n = [5, 3, 2]; // 配列
$size = count($n); // 配列の要素数を取得(3つあるため3が代入される)

print_r:配列を分かりやすい形式で表示させる

print_r関数は、指定した変数に関する情報を分かりやすい形式で出力することが可能です。

$ar = ["orange", "apple", "banana"];
print_r($ar);

// 結果
Array ( [0] => orange [1] => apple [2] => banana )

array_pop:配列の末尾を取り除く

array_pop関数は、配列の末尾を取り除きます。

$ar = ["orange", "apple", "banana"];
array_pop($ar);

// print_r($ar);での結果
Array ( [0] => orange [1] => apple )

array_push:配列の末尾に要素を追加

array_push関数は、配列の末尾に要素を追加します。

array_push(配列, 値1, 値2, ...)
$ar = ["orange", "apple"];
array_push($ar, "cherry", "lemon");

// print_r($ar);での結果
Array ( [0] => orange [1] => apple [2] => cherry [3] => lemon )

ただ、値を追加するだけなら[]を使った配列への直接代入のほうが処理が軽く効率的です。

$ar[] = "cherry";
$ar[] = "lemon";

array_shift:配列の先頭を削除

array_shift関数は、配列の先頭を削除します。
※添字は0から振りなおされます。

$ar = ["orange", "apple", "cherry", "lemon"];
array_shift($ar);

// print_r($ar);での結果
Array ( [0] => apple [1] => cherry [2] => lemon )

array_unshift:配列の先頭に要素を追加

array_unshift関数で、先頭に要素を追加します。

array_shift(配列, 値1, 値2, ...);
$ar = ["apple", "cherry", "lemon"];
array_shift($ar, "peach");

// print_r($ar);での結果
Array ( [0] => peach [1] => apple [2] => cherry [3] => lemon )

unset:配列の要素を削除

unset関数で、配列の要素を削除します。

$ar = ["peach", "apple", "cherry", "lemon"];
unset($ar[2]);

// print_r($ar);での結果
Array ( [0] => peach [1] => apple [3] => lemon )

注意点として、他の要素の数字添字は変更されません

連続性のある添字にするには、番号の振りなおしを行う必要があります。

array_values:添字の番号の振りなおし

array_values関数で、添字を振りなおした配列を新たに生成することが可能です。

// print_r($ar);での結果
Array ( [0] => peach [1] => apple [3] => lemon )

array_values($ar);

// print_r($ar);での結果
Array ( [0] => peach [1] => apple [2] => lemon )

array_slice:配列の切り取り

array_slice関数で、配列の切り取りが可能です。

array_slice(配列, 開始位置 [, 切り取る要素数 = null [, 添字を保持 = false]])
  • 第一引数(必須):対象の配列
  • 第二引数(必須):切り取り開始位置。負の値を指定すると末尾からの位置になる
  • 第三引数(省略可):切り取る要素数。負の値を指定すると、末尾からその数を除いた範囲までを切り取る
  • 第四引数(省略可):trueで元の添字を保持、falseで連番にリセット
$input = array("a", "b", "c", "d", "e");

$output = array_slice($input, 2);      // "c", "d", "e" を返す
$output = array_slice($input, -2, 1);  // "d" を返す
$output = array_slice($input, 0, 3);   // "a", "b", "c" を返す

// 添字を保持しない切り取り
print_r(array_slice($input, 2, -1));
// 添字を保持した切り取り
print_r(array_slice($input, 2, -1, true));

// 結果
Array ( [0] => c [1] => d )
Array ( [2] => c [3] => d )

array_marge:配列の結合

array_marge関数で、配列の結合が可能です。

$ar1 = ["a", "b"];
$ar2 = ["c", "d", "e"];
$result = array_marge($ar1, $ar2);

// print_r($result);での結果
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e )

連想配列

連想配列は、キーと値の組み合わせで構成される配列のことで、通常の配列との違いは、添字が自動でなく任意に指定できる点です。

// 連想配列
$a = ["apple"=>"りんご", "banana"=>"バナナ", "orange"=>"オレンジ"];
echo $a["orange"];

// 結果
オレンジ

要素の追加と削除

$animals = ["dog"=>"犬", "cat"=>"猫", ""=>"鳥"];

$animals["dog"] = "いぬ"; // "dog"の値を"犬"から"いぬ"に変更
$animals["horse"] = "馬"; // "horse"をキー、"馬"を値として追加
unset($animals["cat"]);  // キー"cat"の要素を削除 

foreach文

foreachループで、配列の要素を1つずつ順番に取り出すことができます。

foreach (配列変数 as 変数) {
  処理
}

$a = ["apple"=>"りんご", "banana"=>"バナナ", "orange"=>"オレンジ"];
foreach ($a as $value) {
  echo $value . "<br>";
}

// 結果
りんご
バナナ
オレンジ

キーと値の両方を取得することも可能です。

foreach (配列変数 as 変数A => 変数B) {
  処理
}

$a = ["apple"=>"りんご", "banana"=>"バナナ", "orange"=>"オレンジ"];
foreach ($a as $key=>$value) {
  echo $key . ":" . $value . "<br>";
}

// 結果
apple:りんご
banana:バナナ
orange:オレンジ

続く

続きはこちら。

おすすめWEBスクール

WEB制作やWEBデザインを学びたいなら、SNSでも話題の「デイトラ」がおすすめ!
どのコースも10万円前後と業界最安値で、副業や転職に向けて十分なスキルを身につけることができます。

役に立ったら他の方にシェア

お気軽にコメントどうぞ

コメントする

目次