はじめに
下記サイトの実践記です。第5回目PHP編
「チームラボオンラインスキルアップ課題」
https://team-lab.github.io/skillup
今回学習すること
STEP1-5.PHPを書いてみる
HTMLやCSSはあらかじめ書かれた内容を表示しているだけのものでした。
PHPはサーバ側を生成するプログラムです。これによって、送信されたデータによってページの内容を変えることなどができるようになります。また、サーバで実行できるプログラムには他にもRuby、Perl、Python、Javaなど様々なものがあります。
それでは実際にPHPを書いてみましょう。
プログラムを書いてみる
<?php echo `<p>Hello World</p>`; ?>
//現在の日付を取得して表示する
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>PHPのサンプル</title>
</head>
<body>
<?php
$date = date("Y/m/d H:i:s");
print($date);
?>
</body>
</html>
PHPはHTMLの中に組み込んで書きます。<?phpから?>までがPHPのプログラム本体です。
PHPでは変数は先頭に$を付ける決まりになっています。
dateは日付を文字列で返す関数、printは内容を表示する関数です。
基本構文
以下はPHPの基本的な構文とコード例です。もっと詳しく知りたい場合や、
分からないことがある場合はPHPマニュアルを見ると良いでしょう。
if文
<?php
$a = 5;
if($a == 3){
print("$a is 3");
} else {
print("$a is not 3");
}
?>
出力
5 is not 3
for文
<?php
//$iが0から10未満の間、1ずつ加算しながら繰り返し
for($i = 0; $i < 10; $i++){
print("$i ");
}
?>
出力
0 1 2 3 4 5 6 7 8 9
if,for以外の制御構造はPHP: 制御構造を参照してください。
関数
<?php
//引数の文字列を2回表示する関数
function double_print($text){
print($text . $text);
}
double_print("a");
double_print("bc");
?>
出力
aabcbc
文字列の結合は.(ドット)演算子で行います。+ではありません。
配列
<?php
//"one","twp","three"を要素とする配列を作成
$a1 = array("one","two","three");
//配列$a1の末尾に"four"という要素を追加
$a1[] = "four";
////配列$a1の0番目の要素を変更
$a1[0] = "one?";
//表示
print\r($a1);
?>
出力
Array([0]=> one?[1] => two[2] => three [3] => four)
print_rは変数の構造と内容を全て書き出す関数です。
連想配列
<?php
//$hash["one"]が"いち",$hash["two"]が"に",$hash["three"]が"さん"となる連想配列を作成
$hash = array("one" => "いち","two" => "に","three"=>"さん");
$hash["four"] = "し";
print_r($hash);
//$hashの各要素を取り出して処理
foreach($hash as $key => $val)
print("$key is $val");
?>
出力
Array ([one]=>いち [two] => に [three] => さん [four] => し) one is いち. two is に. three is さん. four is し.
PHPでは配列の添え字に文字列を使うことができ、これを連想配列と呼びます。
配列の詳しい使用はPHP:配列に記載されています。
正規表現
正規表現とは文字列のパターンを表現する方法です。たとえば、パスワードの形式を「半角英数」というパターンに制御する際などに使用します。以下の例では「数学」というパターンを検索しています。
<?php
if(preg_match('/(-?)[0-9]+(\.[0-9]+)?/', 'q-6.83p', $m)){
print("match: $m[0] ");
if($m[1] == "-")
print("minus! ");
if(isset($m[2]))
print("decimal!");
} else {
print("not match");
}
?>
出力
match: -6.83 minus! decimal!
•正規表現の書き方についての解説はしません。知りたい方は各自で調べてください。◦この資料自体は正規表現が書けなくても問題が無い構成になっています。
•preg_matchは第1引数の正規表現に第2引数がマッチしたかどうかを返します。◦第3引数に配列を渡すと、0番目の要素はマッチした部分全体、1番目以降の要素はマッチした()内の部分が格納されます。
•issetは変数がセットされており、かつNULLではないかチェックする関数です。
•その他分からない関数はPHPマニュアルの右上から検索できます。