PHPの基礎の基礎についてまとめました。
まずはプログラミング言語としての単純な文法についての内容です。HTMLとの連携については、改めて別記事で整理します。PHPの文法はかなりC/C++に近いので、C/C++経験者なら覚えるのも簡単そうです。
そもそもPHPってどう記述する?
「 <?php 」と「 ?> 」で囲んだ場所がPHPのコードになります。
<?php
//... この中にPHPのコードを書く<br>
?>
echoで出力
「echo XXX;」で結果を出力します。
文の末尾にセミコロン「 ; 」が必要です。
//でコメントをつけることができます。
文字列はシングルクォーテーションやダブルクォーテーションで表します。
<?php
echo 5 + 2; // 結果 = 7<br>
echo '5 + 2'; // 結果 = 5 + 2
?>
変数
変数は先頭に$をつけて表します。
<?php
$name = 'Bob';
?>
演算子
演算子はC/C++等と同じです。
+ : 加算
– : 減算
* : 乗算
/ : 除算
% : 剰余
+= : $x += 5; でxに5を加算
-= : $x -= 5; でxから5を減算
++ : $x++, ++$xで$xに1を加算。 $x = $x + 1と同じ
— : $x–, –$xで$xに1を減算。$x = $x -1と同じ
$x++と++$xの違い
「++」「–」の振る舞いもC/C++と同じです。
$x = 3;
$y = 3;
echo $x++; // 3が出力される。echoの後に1を加算
echo ++$y; // 4が出力される。echoの前に1を加算
比較演算子
比較演算子もC/C++と同じです。
以下の条件の時true
< : 右辺の方が大きいとき
<= : 右辺の方が大きい or 等しいとき
> : 左辺の方が大きいとき
>= : 左辺の方が大きい or 等しいとき
== : 左辺と右辺が等しいとき
!= : 左辺と右辺が等しくないとき
論理演算子
論理演算子もC/C++と同じです。
&& : 左辺がtrue、かつ、右辺がtrueのときtrue
|| : 左辺がtrue、または、右辺がtrueのときtrue
! : 右辺の否定(右辺がtrueのときfalse、右辺がfalseのときtrue)
文字列
文字列の連結
文字列はドット”.”で連結できます。
“.=”は”+=”等と同様の意味で使えます。
$lesson = 'PHP';
$level = '入門';
echo $lesson.$level; // PHP入門
$name = 'わがはいは';
$name .= 'ねこである'; // $name = $name.'ねこである'と同じ
echo $name; // わがはいはねこである
変数展開
文字列をダブルクォーテーションでくくると、{}で囲んだ変数がその値に置き換えられます。シングルクォーテーションだと、変数名と{}がそのまま出力されます。
$name = 'わがはい';
echo "こんにちは、{$name}さん"; // こんにちは、わがはいさん
echo 'こんにちは、{$name}さん'; // こんにちは、{$name}さん
制御文
if文
if文は基本的にC/C++と同じです。
if(条件式1){
条件式1がTRUEの場合の処理
}
if(条件式1){
条件式1がTRUEの場合の処理
}elseif(条件式2){
条件式2がTRUEの場合の処理
}
if(条件式1){
条件式1がTRUEの場合の処理
}elseif(条件式2){
条件式1がfalseで条件式2がTRUEの場合の処理
}else{
条件式1も条件式2もfalseの場合の処理
}
swtch文
switch文もC/C++と同じです。
if文、elseif文による分岐が多く複雑な場合に使うとシンプルに書けます。
以下の2つは同じ結果になります。
「break」がないと、後の処理をすべて実行します。
「continue」でその周のループをスキップします。
if($coin == 0){
echo "表";
} elseif ($coin == 1) {
echo "裏";
} else {
echo "エラー";
}
switch($coin){
case 0:
echo "表";
break;
case 1:
echo "裏";
break;
default:
echo "エラー";
break;
}
配列
配列
配列は[]で作ります。
インデックスは0から始まります。
このあたりはC/C++と同じですが、配列の作り方はC/C++と違います。
配列はarray関数を使って定義します。
インデックを指定しないで書くと配列に値を追加することになります。
中に含めるデータの型は文字列、数字が混在していてもOKです。
$name = array('John', 'Kate', 'Bob');
echo $name[0]; // John
echo $name[1]; // Kate
$name[] = "Mary";
echo $name[3]; // Mary
// 配列に含まれるデータは、文字列、数値が混在していてもOK
$a = array("佐藤", "青木", "スズキ", 1, 2, 3);
echo $a[0]."<br>"; // "佐藤"
echo $a[0]."<br>"; // "青木"
echo $a[0]."<br>"; // "スズキ"
echo $a[0]."<br>"; // 1
echo $a[0]."<br>"; // 2
echo $a[0]."<br>"; //3
連想配列
これもC/C++にはないものかな。
配列のインデックスを番号ではなく、キーと呼ばれる文字列で指定することができます。
$配列名 = array(“キー名” => 値1, …)という形で配列を設定します。
キーにない配列に値を代入すると追加になります。
$user = array(
"name" => "わがはい”,
"age" => 14,
"gender" => "male"
);
echo $user["name"]; // わがはい
$user["level"] = "beginner"; // 追加
繰り返し処理
forループ
forを使って繰り返し処理ができます。
for ($i = 1; $i <= 100; $i++){
echo $i."<br>"; // "."で文字列結合
// "<br>"で改行。"<br>"はダブルクォーテーションでくくる。
}
foreachループ
foreachを使うと、配列または連想配列に対して、先頭のデータから順に繰り返す処理ができます。
//書き方1
$towns = array("東京", "大阪", "京都");
foreach($towns as $town){
echo $town." "; // $townsの1番目,2番目,3番目が出力される。
}
//書き方2
$colours = array(
"apple" => "red",
"banana" => "yellow",
"grape" => "purple"
);
foreach($colours as $key => $value){
echo $key.":".$value." ";
}
// 連想配列ではなく、配列の場合、$keyにはインデックス番号が入る
whileループ
whileでも繰り返し処理ができます。
$i = 1;
while($1 <= 100){
echo $i."<br>";
$i++;
}
break文
break文を使うことで繰り返し処理を途中で中断できます。
for($i = 1; $i <=10; $i ++){
if($i > 5){
break; // $i > 5になったら、forループを抜ける
}
echo $i."<br>";
}
continue文
continue文を使うと、現在の周をスキップして次の周に移行することができます。
for($i =1; $i <= 10; $i++){
if($i % 3 == 0){
continue; // 3の倍数のときは次のループ
}
echo $i."<br>"; // 3の倍数以外が出力される。
}
関数
組み込み関数
phpには用意された関数があります(組み込み関数)。
組み込み関数の例
strlen(x): 文字列xの文字数を返す。
count(x): 配列xの要素数を返す。
rand(a, b) : a,b間のランダムな整数を返す。
echo strlen("lesson"); // 6
$language = "PHP";
echo strlen($language); // 3
$towns = array("東京", "大阪", "京都");
echo count($towns); // 3
echo rand(1,4); // 1〜4のランダムな整数を返す。
関数を作る
functionを使って自分で関数を作ることができます。
// 関数の定義
function printCicleArea($radius){
echo $radius*$radius*3.14;
}
// 関数の呼び出し
printCicleArea(3);
printCicleArea(5);
// 戻り値のある関数
function getSum($a, $b){
return $a + $b; // returnで戻り値を返す
}
echo getSum(1, 3);