はじめに
PHPの書き方についてまとめてみました。
検証に使用した環境
PHP:7.2
PHPの書き方
PHPはHTMLに埋め込んで使うことができます。
<?php 〜 ?>の中に具体的な処理を書いていきます。
例えば
例)ソースの状態のphpファイル
<html>
<body>
<?php echo '<h1>タイトル</h1>'; ?>
</body>
</html>
レンダリング後
<?php 〜 ?>内で実装したh1タグがhtmlに変換されて表示されました。
<html>
<body>
<h1>タイトル</h1>
</body>
</html>
コメント
「//」で記述すると行末までコメントとして扱われます。
<?php
// コメント
echo '<h1>コメントサンプル</h1>';
?>
変数
変数名は、先頭に「\$」からはじめます。
※変数名は、先頭文字に数字は使えません。($1hogeなど)
例)変数に「hogehoge」を格納する
<?php
$hoge = 'hogehoge';
?>
文字列の出力
「echo」で文字列を出力できます。
文字列はシングル、またはダブルクォーテーションで括ります。
<?php
echo '<h1>シングルクォーテーション</h1>';
echo "<h1>ダブルクォーテーション</h1>";
?>
文字列を結合する
「.」を挟むことで、文字列や変数を結合することができます。
<?php
// 文字列同士を連結した場合
echo 'hoge'.'hoge'; // hogehogeと表示される
// 変数と文字列を連結した場合
$hoge = 'hoge';
echo $hoge.'hoge'; // hogehogeと表示される
?>
省略形
「.=」で連結した文字列を再代入できます。
<?php
$hoge = 'hoge';
$hoge .= 'hoge';
echo $hoge; // hogehogeと表示される
?>
変数展開
ダブルクォーテーションで囲んだ文字列の場合、変数を{}で囲むと変数の格納内容が展開されて出力されます。
シングルクォーテーションで囲んだ文字列の場合、変数を{}で囲むと変数名がそのまま出力されます。
<?php
$hoge = 'hogehoge';
echo "{$hoge}"; // hogehogeと表示される
echo '{$hoge}'; // {$hoge}と表示される
?>
演算子
<?php
// 足し算
echo 1 + 1; // 結果:2
// 引き算
echo 1 - 1; // 結果:0
// 掛け算
echo 2 * 3; // 結果:6
// 割り算
echo 6 / 2; // 結果:3
// 除算
echo 7 % 2; // 結果:1
?>
省略形
変数を利用した計算結果を再代入する場合、省略形を使うこともできます。
例)$hogeに1を足して再代入したい場合
<?php
// 通常だと
// $hoge = $hoge + 1;
// 省略形
$hoge += 1;
?>
インクリメント・デクリメント
変数に+1、または-1したい場合、インクリメント・デクリメントを使用できます。
<?php
// インクリメントで+1
$hoge++;
// デクリメントで-1
$hoge--;
?>
記載位置の違い
++を変数の前に記述すると、+1してから当行の命令文を実行し、
++を変数の後に記述すると、当行の命令文を実行してから+1します。
※--も同様
<?php
$hoge = 1;
// +1されてからechoするため、2が表示されます
echo ++$hoge;
?>
<?php
$hoge = 1;
// echoされてから+1するため、1が表示されます
echo $hoge++;
?>
条件分岐
if文
条件分岐にはif文を使います。
<?php
$hoge = 1;
if ($hoge > 0) {
echo "条件に該当しました!";
}
?>
比較演算子
比較演算子 | 比較内容 |
---|---|
< | 左辺は右辺より小さいか? |
<= | 左辺は右辺より小さい、または同じか? |
> | 左辺は右辺より大きいか? |
>= | 左辺は右辺より大きい、または同じか? |
== | 左辺と右辺は等しいか? |
!= | 左辺と右辺は等しくないか? |
複数条件
and条件の場合は「&&」、or条件の場合は「||」で各条件を繋げます。
<?php
$hoge = 1;
// $hogeが0より大きく、かつ10未満の場合
if ($hoge > 0 && $hoge < 10) {
echo "条件に該当しました!";
}
// $hogeが0、または1の場合
if ($hoge == 0 || $hoge == 1) {
echo "条件に該当しました!";
}
?>
条件の反転
条件式を()で囲み、「!」を先頭に記述することで、対象の条件に式の反転を実現できます。
<?php
$hoge = -1;
if (!($hoge > 0)) {
echo "条件に該当しました!";
}
?>
else
if文の条件に該当しない場合の処理はelse、elseifで記述します。
<?php
$hoge = 1;
if ($hoge > 0) {
echo "ifの条件に該当しました!";
} elseif ($hoge == 0) {
echo "elseifの条件に該当しました!";
} else {
echo "どの条件に該当しませんでした!";
}
?>
switch文
switch文を使うと、複数の条件分岐を記述できます。
switch()で指定した変数等がcaseで指定した各条件に該当する場合、case以下の処理を実行します。
もし、どのcaseにも該当しない場合、default以下の処理を実行します。
[注意]
case以下の処理には、それぞれ「break」を入れてください。
「break」が無い場合、次のcase以下の処理も実行されてしまいます。
<?php
$hoge = 1;
switch ($hoge) {
case 0:
echo "0に該当しました。";
break;
case 1:
echo "1に該当しました。";
break;
case 2:
echo "2に該当しました。";
break;
default:
echo "どれにも該当しませんでした。";
break;
}
?>
配列
array()で、配列を定義することができます。
<?php
// 配列を定義
// array()だけで空の配列を作成し、引数を渡すと初期値として設定してくれます。
$hoges = array('hoge1','hoge2','hoge3');
// 配列の0番目の値を取得し、出力する
echo $hoges[0];
// 配列内の要素を別の値に変更する
$hoges[0] = 'newHoge1';
// 配列の最後に要素を追加する
$hoges[] = 'hoge4';
?>
配列の要素数を取得する
配列に格納されている要素の数を取得するには、count()を使用します。
<?php
// 配列を定義
$hoges = array('hoge1','hoge2','hoge3');
// 配列の要素数を取得し、出力する
echo count($hoges);
?>
連想配列
配列と同様に複数のデータを扱えます。
連想配列では、キーとなる文字列を指定して個々の要素を管理します。
<?php
// 連想配列を定義する
$hoges = array(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3');
// 連想配列の中身を取得する
echo $hoges['key1'];
// 連想配列に要素を追加する
$hoges['key4'] = 'value4';
echo $hoges['key4'];
?>
連想配列の要素数を取得する
連想配列に格納されている要素の数を取得するには、配列と同様にcount()を使用します。
<?php
// 連想配列を定義
$hoges = array(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3');
// 連想配列の要素数を取得し、出力する
echo count($hoges);
?>
繰り返し
for文
繰り返し処理はfor文で記述します。
記述方法は以下の通り。
for ( 初期化処理 ; 繰り返し条件 ; 変数の更新処理) {
繰り返す 処理
}
<?php
$hoges = array('hoge1','hoge2','hoge3');
for ($i = 0; $i < count($hoges); $i++) {
echo $hoges[$i];
}
?>
意図的な無限ループとbreak文
for文に記述する初期化処理、繰り返し条件、変数の更新処理は、それぞれ省略が可能です。
そのため、以下のように無限ループを実装し、繰り返し処理の中でbreak文で抜けることも出来ます。
<?php
$hoges = array('hoge1','hoge2','hoge3');
$i = 0;
for (; ;) {
if ($i >= count($hoges)) {
break;
}
echo $hoges[$i];
$i++;
}
?>
continue文
continue文を使うことで、continue文以降の繰り返し処理をスキップ出来ます。
例)1番目の配列要素はスキップし、各要素を出力する
<?php
$hoges = array('hoge1','hoge2','hoge3');
for ($i = 0; $i < count($hoges); $i++) {
if ($i == 0) {
continue;
}
echo $hoges[$i];
}
?>
while文
while文でも繰り返し処理を記述できます。
while文に記述する条件式がtrueの間、処理を繰り返します。
for文と違い、初期化処理、変数の更新処理はないため、while文の内外で意図しない無限ループにならないように注意が必要です。
<?php
$hoges = array('hoge1','hoge2','hoge3');
$i = 0;
while ($i < count($hoges)) {
echo $hoges[$i];
$i++;
}
?>
foreach文
配列、連想配列の要素を先頭から順に取り出して処理を繰り返します。
「as」の後に定義された変数に、各繰り返し処理で取り出された要素が代入されます。
<?php
$hoges = array('hoge1','hoge2','hoge3');
foreach ($hoges as $hoge) {
echo $hoge;
}
?>
キー変数
foreach文の各繰り返し処理では、配列(連想配列)の内容とキー変数、値変数にそれぞれ代入されます。
値変数には要素そのものが入り、
キー変数には、配列ではインデックス、連想配列ではキーが代入されます。
※キー変数は省略可能です。
<?php
$hoges = array('hoge1','hoge2','hoge3');
foreach ($hoges as $index => $hoge) {
echo "インデックス番号:".$index."、要素:".$hoge."<br>";
}
?>
関数
組み込み関数
PHPには、最初から組み込まれている関数があります。
指定した文字列の文字数を返す strlen(arg)
例)「hoge」の文字数である4を出力する
<?php
echo strlen("hoge");
?>
配列の要素数を返す count(arg)
例)「hoges」配列の要素数である3を出力する
<?php
$hoges = array('hoge1','hoge2','hoge3');
echo count($hoges);
?>
配列の要素数を返す count(arg)
例)1〜10でランダムな整数を出力する
<?php
echo rand(1, 10);
?>
関数を定義する
以下の形式で関数を定義することが出来ます。
<?php
function 関数名(引数1, 引数2, ....) {
return 返り値; // 省略可
}
?>
例)関数を呼び出して配列の各要素を改行しながら出力する
<?php
// 関数を定義
function echoWithBr($arg) {
$ret = $arg."<br>";
echo $ret;
return $ret;
}
$hoges = array('hoge1','hoge2','hoge3');
foreach($hoges as $hoge) {
// 関数を呼び出す
echoWithBr($hoge);
}
?>