ITメモ
PHP
PHP マニュアル(PHP Official Web)
Basic Knowlege / 基礎知識
「CentOS」にPHPをインストール方法PHPファイルの作り方外部「クラスファイル」「関数ファイル」を読み込む方法変数の使い方定義済み変数の使い方関数の使い方配列の使い方クラスの使い方ヒアドキュメントの使い方PHPの演算子条件分岐
Access Info / アクセス インフォ
IPアドレスを確認する方法アクセスされたURLパスを確認する方法PCとスマートフォンの判定アクセスしたページから特定ページにリダイレクトさせる方法
ファイル・ディレクトリ
ファイルとディレクトリの操作方法(作成・確認・削除)ディレクトリ内のファイル・ディレクトリPath(URL)を配列に格納する方法
ファイルの読み込みと書き込み
「file_get_contents」関数を使ってファイルを読み込む方法「readfile」関数を使ってファイルを読み込む方法「file」関数を使ってファイルを読み込む方法「fread」関数を使ってファイルを読み込む方法「fgets」関数を使ってファイルを読み込む方法「fwrite」関数を使ってファイルに書き込みをする方法
チェック
「is_file」関数 - 指定パスがファイルかをチェックする方法「is_dir」関数 - 指定パスがディレクトリかをチェックする方法
画像ファイル
画像ファイルのIPTC情報を取得する方法 画像ファイルをZipファイル形式でダウンロードさせる画像をコピーする方法画像のキーワード情報を取得する方法画像ファイルから「EXIF」ヘッダを読み込む画像の大きさ・画像情報を取得する
情報
「PHP」の出力系関数 - プログラミングで必須のデータ内容をチェックする方法関数の返り値を複数で受け取る方法使用可能なメモリ使用量を変更する方法mb_send_mail - エンコード変換を行ってメールを送信する「Google」「Goolge Map]に渡した値が文字化けするときの解決方法PHPで日付比較をする方法
文字列
「文字列」の長さを取得する方法【 substr 】「文字列」から一部分を取り出す方法【 explode 】「文字列」を分割する方法【 preg_split 】正規表現で「文字列」を分割するランダムな数字を取得する方法
文字の検索
「strpos」関数で指定文字の最初の位置を確認する方法「preg_match」関数で指定した「正規表現」で検索する方法
文字の置換
「str_replace」関数で指定した文字列を置き換える方法「preg_replace」関数で指定した文字列を置き換える方法
文字の削除
「trim」関数 - 文字列の両端から指定文字を削除する方法「ltrim」関数 - 文字列の先頭から指定文字を削除する方法「rtrim」関数 - 文字列の末尾から指定文字を削除する方法文字列の中にある「文字」を削除する方法「改行」を削除する方法文字列の「空白(スペース)」を削除する方法
配列
配列に値を追加する方法配列の値を削除する方法配列の有無を確認する方法配列の中から重複した値を削除する配列の空の値を削除する配列の並び順を変えるis_array - 変数が配列かを確認するin_array - 配列の中に指定した値があるか確認するimplode - 値の間に文字加えて配列を文字列に変換するarray_merge - 配列と配列を結合する方法
ライブラリ
「PHP」で使えるライブラリの種類「GD」ライブラリの使い方
Server / サーバー
サーバーの最大実行可能時間を変更する





【PHP】条件分岐

【PHP】
条件分岐










「PHP]で使える条件分岐の種類


「PHP]で使える条件分岐の種類は、

・if
・while
・do-while
・for
・foreach
・switch
・match

などがある。


制御構造説明
break 現在実行中の for, foreach, while, do-while, switch 構造の実行を終了します。
continue continue は、ループ構造において現在の繰り返しループ の残りの処理をスキップし、条件式を評価した後に 次の繰り返しの最初から実行を続けるために使用されます。
return return は、プログラムの制御を呼び出し元に戻します。 呼び出し側のモジュールでは、呼び出しの次の式から続行します。
goto 「goto」演算子を実行すると、
指定したラベル先へ移動してプログラムを実行することができる。
対象となるラベルは、同じファイル上の同じコンテキストになければならない。
同じ関数内や、同じループ内でのみ利用可能。

ラベルの書式は、「ラベル名:」。
goto演算子の書式は、「goto ラベル名;」。



「goto」演算子のサンプルコード


<?php

goto a;
echo 'First Text!!';

a:
echo 'Second Text!!';

?>



Back



「if」 - 条件によって実行プログラムを分けることができる


「PHP」の「if」構文は、
条件によって実行プログラムを分けることができる構文で、
プログラムで良く使われる機能の1つ。
「if」単体だけではなく、「else」「else if」と一緒に使用し、
複数の条件分岐を同時に行うことも可能。

「else」は、
「if」「else if」構文と一緒に利用し、
「if」構文で「false」と判定された時に実行されるプログラムを記述する構文。

「elseif/else if」は、
「if」「else」構文と一緒に使用される構文で、
「if」構文で指定した条件とは、別の条件を加えたい時に使用される構文。


「if」「elseif/else if」「else」の書式


<?php

if (条件式)
条件を満たしたときの実行プログラム


if (条件式){
条件を満たしたときの実行プログラム
}


if (条件式) {
条件を満たしたときの実行プログラム
} else {
条件を満たさなかった時の実行プログラム
}


if (条件式) {
「if」の条件を満たしたときの実行プログラム
} elseif ($a == $b) {
「elseif」の条件を満たしたときの実行プログラム
} else {
条件を満たさなかった時の実行プログラム
}


if (条件式):
「if」の条件を満たしたときの実行プログラム
elseif (条件式):
「elseif」の条件を満たしたときの実行プログラム
else:
条件を満たさなかった時の実行プログラム
endif;

?>



Back



「while」 - 条件を満たしている間繰り返し


「while」構文は、
シンプルな繰り返しの構文で、
条件を満たしている間は、実行プログラムを繰り返す。


「while」構文の書式

while (式)
実行プログラム


while (式):
実行プログラム
...
endwhile;


同じ内容のプログラムを違った書式で記述したサンプルコード

<?php

$i = 1;
while ($i <= 10) {
echo $i++;
/* 出力値は、計算前の「$i」の値。(後置加算) */ }


$i = 1;
while ($i <= 10):
echo $i;
$i++;
endwhile;

?>



Back



「do-while」 - 1度実行し条件式を満たしている間繰り返し


「PHP」の「do-while」は、
最初の一度だけプログラムが実行され、
以降は、条件式を満たしている間、繰り返し実行される条件分岐の構文。
「while」と異なるのは、
最初の1度は必ず実行されること。
最初から値がfalseである場合は、最初の1度以降、ループの実行は行われない。



do-while ループの構文

<?php
$i = 0;
do {
echo $i;
} while ($i < 5);
?>


Back



「for」 - 条件の範囲内の間は繰り返し


「for」構文は、
条件を指定して、3つ指定することで、
その条件の範囲内の間は繰り返しが実行される。

「条件式1」は、ループ開始時に実行される式(条件に必要な値を設定することが多い。
「条件式2」は、繰り返し開始時に評価される式で、条件を満たしている間は繰り返しが実行される。
「条件式3」は、繰り返しが1度行われるごとに実行される式。



「for」構文の書式


for (式1; 式2; 式3)
実行プログラム


for (式1; 式2; 式3){
実行プログラム
}


for (式1; 式2; 式3):
実行プログラム文;
...
endfor;



サンプルコード

<?php

for ($i = 1; $i <= 10; $i++) {
echo $i;
}


for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}


$i = 1;
for (; ; ) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}


for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);

?>



Back



「foreach」 - 配列の繰り返し処理をする


「foreach」構文は、配列の中身を1つずつ操作できるように繰り返す構文。
配列の中にあるキーと値を繰り返し1つずつ処理することができるので、
配列の操作をするときに便利な構文。
「foreach」が使えるのは「配列」と「オブジェクト」のみ。



「foreach」構文の書式

foreach (iterable_expression as $value)
実行プログラム
foreach ($配列名 as $配列の値を入れる変数名)
実行プログラム


foreach (iterable_expression as $key => $value)
実行プログラム
foreach ($配列名 as $配列のキー値 => $配列の値を入れる変数名)
実行プログラム



サンプルコード

<?php

----------------------------------------
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
nset($value);

「$arr」の配列は、「array(2, 4, 6, 8)」となる。
ループの中で配列の値を変更したい場合は、「$value」の前に「&」を付けると編集が可能になる。
「nset($value);」で、最後の要素への参照を解除する。
参照を解除しないと、以後の処理で要素が残り、値が間違えてしまう。
----------------------------------------



----------------------------------------
foreach (array(1, 2, 3, 4) as &$value) {
$value = $value * 2;
}
----------------------------------------


----------------------------------------
$a = array(1, 2, 3, 17);
$i = 0;
foreach ($a as $v) {
echo "\$a[$i] => $v.\n";
$i++;
}
----------------------------------------


----------------------------------------
$a = array(
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
);
foreach ($a as $k => $v) {
echo "\$a[$k] => $v.\n";
}
----------------------------------------


----------------------------------------
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach ($a as $v1) {
foreach ($v1 as $v2) {
echo "$v2\n";
}
}
----------------------------------------


----------------------------------------
foreach (array(1, 2, 3, 4, 5) as $v) {
echo "$v\n";
}
----------------------------------------


----------------------------------------
$array = [
[1, 2],
[3, 4],
];

foreach ($array as list($a, $b)) {
echo "A: $a; B: $b\n";
}
----------------------------------------


?>


Back



「switch」 - 条件によって振り分けができる


「switch」構文は、
変数などの値に応じた実行プログラムに振り分けができる構文。
「if」構文に似ていて、条件によっての振り分けができるところは同じ。


「default:」は、どんな値でも必ず実行される。
「switch」構文は、「break:」で実行を抜け出さないと、
その後にある条件のプログラムも実行してしまう。



「switch」の書式

<?php

if ($i == 0) {
echo "iは0に等しい";
} elseif ($i == 1) {
echo "iは1に等しい";
} elseif ($i == 2) {
echo "iは2に等しい";
}

switch ($i) {
case 0:
echo "iは0に等しい";
break;
case 1:
echo "iは1に等しい";
break;
case 2:
echo "iは2に等しい";
break;
}



switch ($i):
case 0:
echo "iは0に等しい";
break;
case 1:
echo "iは1に等しい";
break;
case 2:
echo "iは2に等しい";
break;
default:
echo "iは0でも1でも2でもない";
endswitch;

?>



Back



「match」 - 型と値の一致で条件分岐する


「match」構文は、
型と値の一致チェック(===) した結果に基づいて条件分岐をする。

「match」構文の特徴は、
・厳密に値を比較(===)
・match 式は値を返す
・switch文のように後の分岐に抜けない
・全てのケースを網羅する必要がある
などがある。



「match」構文の書式



$return_value = match (制約式) {
単一の条件式 => 返却式,
条件式1, 条件式2 => 返却式,
};

switch 文のように、 match 式はマッチさせる分岐をひとつひとつ実行します。 はじめは、コードは何も実行されません。 以前のすべての条件式が、制約式とマッチしなかった場合に条件式が実行されます。 条件式に一致する式が評価された場合に、返却式が評価されます。 たとえば、以下のようになります:


サンプルコード

<?php

$result = match ($x) {
foo() => ...,
$this->bar() => ...,
$this->baz => beep(),
};


$result = match ($x) {
// この分岐は: $a, $b, $c => 5,
// 以下の3つの分岐と等しい:
$a => 5,
$b => 5,
$c => 5,
};


$expressionResult = match ($condition) {
1, 2 => foo(),
3, 4 => bar(),
default => baz(),
};


$condition = 5;
try {
match ($condition) {
1, 2 => foo(),
3, 4 => bar(),
};
} catch (\UnhandledMatchError $e) {
var_dump($e);
}



$age = 23;
$result = match (true) {
$age >= 65 => 'senior',
$age >= 25 => 'adult',
$age >= 18 => 'young adult',
default => 'kid',
};
var_dump($result);



$text = 'Bienvenue chez nous';
$result = match (true) {
str_contains($text, 'Welcome') || str_contains($text, 'Hello') => 'en',
str_contains($text, 'Bienvenue') || str_contains($text, 'Bonjour') => 'fr',
// ...
};
var_dump($result);


?>


Back