PHPの書き方
PHPはHTMLに埋め込んで使うことができる。<?php ?>の中にPHPの命令を書いていく。
<?php ?>の部分がHTMLに変換された上で表示される。
PHPのコード<html> <head></head> <body> <h1>PHP</h1> <?php echo '<h2> 初級 </h2>'; ?> </body> </html>
HTMLに変換されたコード<html> <head></head> <body> <h1>PHP</h1> <h2> 初級 </h2> </body> </html>
PHPの文法
PHPでは文末にセミコロン『;』を使って文を区切る。セミコロンを忘れるとエラーが起きるので注意する。
index.php<?php // 末尾にセミコロンをつける! echo 'こんにちは'; echo 'PHPを学ぼう'; ?>
文字列を出力
『echo』は文字列などを出力するための命令である。文字列を出力する場合はシングルクォーテーション『'』かダブルクォーテーション『"』で囲む。
<?php echo "Hello, World!"; ?> // 結果 Hello, World! <?php echo 'Hello, PHP!'; ?> // 結果 Hello, PHP!
計算
echo 7 + 3; echo 2 - 1; echo 3 * 6; echo 4 / 2; echo 5 % 2;
変数
頭に『$』記号をつけることにより変数を定義できる。『$変数名 = 値;』で様々な値を変数に入れることができる。
<?php $name = 'Bob'; echo $name; ?>
結果
Bob
// 正方形の面積を計算 $length = 7; $area = $length * $length; echo $area;
結果
49
文字の連結
『.』記号を用いると文字を連結することができる。
$lesson = 'PHP'; echo $lesson.'入門'; // 結果: PHP入門 $level = '入門'; echo $lesson.$lrvel; // 結果: PHP入門
『.=』を用いると変数の文字列の連結を省略して書くことができる。
$name = '山田'; $name .= '太郎'; // $name = $name.'太郎'と同じ意味 echo $name;
結果
山田太郎
変数展開
$name = 'takahashi'; echo "こんにちは、{$name}さん"; // 結果: こんにちは、takahashiさん // シングルクォーテーションで囲んだ場合は変数展開されない echo 'こんにちは、{$name}さん'; // 結果: こんにちは、{$name}さん
if文 else elseif文
if文を使うと条件に応じて処理を分岐できる。
$x = 20; if ($x > 10) { echo '$xは10より大きい'; }
結果
$xは10より大きい
elseはifの条件がfalseであった場合、elseの処理が実行される。
$x = 20; if ($x == 30) { // 処理は実行されない echo '$xは30です'; } else { // 処理は実行される echo '$xは30ではありません'; }
結果
$xは30です
elseifを用いることで、多岐分岐が可能になる。
$x = 20; if ($x > 30) { // falseであるため実行されない echo '$xは30より大きい'; } elseif ($x >= 20) { // trueであるため実行される echo '$xは30以下20以上'; } else { // すでに当てはまる条件があったため実行されない echo '$xは20より小さい'; }
結果
$xは30以上20以下
論理演算子
『&&』は『かつ』、『||』は『または』
$x = 20; if ($x > 10 && $x < 30) { echo '$xは10より大きい、かつ30より小さい'; } if ($x < 10 || $x > 30) { echo '$xは10より小さい、または30より大きい'; }
結果
$xは10より大きい、かつ30より小さい
条件の否定
『!』も論理演算子の1つであり、条件の否定ができる。
条件の否定は条件式のtrueとfalseが逆になる
$x = 20; if (!($x == 30)) { echo '$xは30ではない'; }
結果
$xは30ではない
switch文
switch文はswitch(式)の(式)がcaseの値と一致したとき、そのブロックが実行される。caseのどれにも一致しなかった時、defaultのブロックが実行される。
switch ($coin) { case 0: echo '表'; break; case 1: echo '裏'; break; default: echo 'エラー'; break; }
caseブロックの最後にはbreak命令を指定する。break命令は現在のブロックから脱出するための命令である。break命令がないと、後ろに続くcaseブロックが続けて実行される。
配列
配列の基本構文は『$配列名 = array (値1,値2,・・・);』となっている。
配列のデータには先頭から0,1,2,・・・と順にインデックス番号が割り振られている。
配列のデータを取り出すにはインデックス番号を用いて$配列名[インデックス番号]とする。
$name = array('jhon', 'kate', 'bob'); echo $names[0]; // 結果: john echo $names[1]; // 結果: kate
値の追加は、『$配列名[] = 値;』とすることで追加できる。
すでに存在するインデックス番号を指定すると、配列の値を上書きすることもできる。
$names = array('john', 'kate', 'bob'); // 配列の末尾に値を追加する $names[] = 'Mary'; echo $names[3]; // 結果: Mary // 値の上書き $names[1] = 'jane' echo $names[1]; // 結果: jane
連想配列
$配列名 = array('キー名' => '値1', ・・・); のように、 => を用いてキーと値をセットする。
$user = array( 'name' => 'emi', 'age' => 14, 'gender' => 'male' );
値の取り出すには、対応するキーを用いて『配列名[キー];』のようにする。
$user = array( 'name' => 'dai', 'age' => 14 ); echo $user['name']; // 結果: dai
『配列名[キー] = 値;』のようにすることで、連想配列にデータを追加することができる。
$user['level'] = 'beginner';
for文
for文は、 for (①初期化; ②ループの条件; ④変数の更新) { ③繰り返す処理; } のように書く。
for ($i = 1; $i <= 100; $i++) { echo $i.'<br>'; }
結果
1
2
3
・
・
・
100
while文
while文は
①初期化 while (②ループの条件 ) { ③繰り返す処理; ④変数の更新; }
のように書く。
$i = 1; while ($i <= 100) { echo $i; $i++; }
break文
break文は現在のループを強制的に中断する命令である。
for ($i = 1; $i <= 10; $i++) { if ($i > 5) { // $iが6になった段階でfor文を終了 break; } echo $i; }
結果
12345
continue文
continue文は現在の週だけスキップし、ループそのものは継続して実行する。
for ($i = 1; $i <= 10; $i++) { if ($i % 3 == 0) { continue; } echo $i; }
結果
123457810 (3の倍数)
foreach文
foreach文は配列または連想配列に対して、先頭のデータから順に繰り返し処理を行うための命令である。
『as』の後ろの変数に、ループの度にデータが先頭から順に代入される。
$towns = array('東京', '大阪', '京都'); foreach ($towns as $town) { echo $town.' '; }
結果
東京 大阪 京都
foreach文では、配列内のデータが順次『キー変数』、『値変数』に代入され、それに対して処理が繰り返し適用される。
foreach (配列 as 値変数) { 繰り返したい処理; } foreach (配列 as キー変数 => 値変数) { 繰り返したい処理; }
下記のコードでは果物の名前を『キー』として、その色を『値』として保持している連想配列である。
1週目のループでは$keyに'Apple'、$valueに'Red'が、2週目のループでは$keyに'Banana'、$valueに'Yellow'が入っている。
$colors = array( 'Apple' => 'Red', 'Banana' => 'Yellow', 'Grape' => 'Purple' ); foreach ($colors as $key => $value) { echo $key.':'.$value.' '; }
結果
Apple:Red Banana:Yellow Grape:Purple
関数
関数はあるまとまった処理を行い、値を返すものである。
関数には元から組み込まれているものが有り、それらは組み込み関数と呼ばれている。
strlen
strlenは組み込み関数の一つで、文字列の文字数を返す。
()の中に与える値を引数という。
echo strlen('takahashi'); // 結果 : 7
$user = 'ken' echo strlen($user); // 結果 : 3
count
配列の要素の数を返す関数
$towns = array('東京', '大阪', '京都'); echo count($towns); // 結果 : 3
rand
ランダムな整数を返す関数
echo rand(1, 4); // 1〜4のランダムな整数を返す // 結果 : 2
関数の作成
関数は『function 関数名(){処理}』という書き方をする。
function hello() { echo 'Hello, World!'; }
呼び出すには『関数名()』で呼び出す。
hello();
結果
Hello, World!
引数
引数を関数内で使うには、それを受け取るための『仮引数』を関数の定義時に指定しておく必要がある。
仮関数が複数ある場合はカンマ(,)を用いて指定する。
関数の定義
function printSum($num1, $num2) { echo $num1 + $num2; }
関数の呼び出し
printSum(1, 3);
結果
4
戻り値
戻り値は『return』で指定する。
関数の定義
function getSum($num1, $num2) { return $num1 + $num2; }
関数の呼び出し
$sum = getSum(1, 3); echo $sum;
結果
4
formタグ(HTML)
フォームを作りたいときは、HTMLの<form>タグを用いる。
action属性にはデータを渡す先のURLを指定する。
method属性は値の送信方法で、『get』と『post』のどちらかを指定する。
getの場合は送信される値がurlに表示され、postの場合はurlに表示されない。
<form action="url" method="post"> // フォームの内容 </form>
テキストボックス
テキストボックスを作るにはHTMLの<input type="text">を使う。
name属性は入力された値を取得する時に使う名前である。
<form action="url" method="post"> email <input type="text" name="email"> // 入力データに名前をつける 内容 <textarea name="content"></textarea> // textareaは閉じタグが必要 // 送信ボタン <input type="submit" value="送信"> </form>
フォームのデータを受け取る
フォームで送信した値を受け取るには『$_POST』を使用する。
『$_POST』は連想配列になっている。[]の中に、<input>と<textarea>のname属性に指定した値を入れることで、それぞれの送信した値を受け取ることができる。
index.php<form action="url" method="post"> <input type="text" name="name"> <input type="text" name="email"> <input type="submit" value="送信"> </form>
sent.php<?php echo $_POST['name']; ?> <?php echo $_POST['email']; ?>
$_POSTの中身は連想配列になっている
$_POSTの中身array( 'name' => 'takahashi', 'email' => 'ddd@d.com' )
セレクトボックス
セレクトボックスは<select>タグの中に<option>タグを並べる。
index.php<form action="sent.php" method="post"> <select name="fruit"> <option value="apple" >りんご</option> <option value="banana">ばなな</option> <option value="orange">みかん</option> </select> </form>
sent.php<?php echo $_POST['fruit']; ?>
繰り返し処理と変数展開
繰り返し処理と変数展開を用いて多数のoptionタグを作成する。
for ($i = 1; $i < 4; $i++) { echo "<option value='{$i}'>{$i}</option>"; }