基礎文法を学ぼう
開始タグ
<?php //開始タグ
echo 'hogohoge';
?> //閉じタグ
文字列
<?php
echo "ダブルコーテーションでも、シングルコーテーションでも利用できる";
echo " \"hogehoge\" "; //このようにすることによって表示される際にダブルコーテーションを表示できる。
?>
変数
<?php
$name = 'Kimura takuya';
echo "My name is $name";//変数をそのまま代入もできる。
?>
ヒアドキュメント
<?php
//"EOT"ダブルコーテーションの場合は、(heredoc「ヒヤドキュメント」)
//'EOT'シングルコーテーションで囲うと変数の利用ができない(nowdoc「ナウドキュメント」)
$contents = <<<"EOT"
Hi!
My name is hogehoge
I'm glad see you!!
EOT;
echo $contents; //改行や字下げもすべてそのまま表示される。
?>
計算
<?php
echo 10 + 5 .PHP_EOL;
echo 10 - 5 .PHP_EOL;
echo 10 * 5 .PHP_EOL;
echo 10 / 5 .PHP_EOL;
echo 10 % 3 .PHP_EOL;
echo 10 ** 5 .PHP_EOL;
echo 2 + 10 * 3 . PHP_EOL;
echo (2 + 10) * 3 . PHP_EOL;//括弧も使える
//変数での計算
$value = 500;
// $value = $value + 100;
$value += 100; // 600
$value *= 100; // 60000
$value++; // 60001
$value--; // 60000
echo $value . PHP_EOL;
?>
定数
"const" "define"を利用するが、配列なども返すことができる。
<?php
define('PAGE_LIST','book'); //php5 では配列が利用できない。
const PAGE_LIST = array('a','b','c','d');
?>
型(文字列などのデータ型)
文字列:string
整数:int
浮動小数:float
何もない:null
真偽値(bool):true false
”var_dump” にて型を確認できる。そして、型の変換(キャスト)は、変数名の前で型を「(float)$value」などとして指定する。
<?php
$value1 = 'hello'; //string
$value2 = 10; //int
$value3 = -2.5; //float
$value4 = null; //Null
$value5 = false; //bool
var_dump($value1); //このようにして型を調べる
//型の変更(キャスト)
$value2 = (float)10; //floatに変更される
$value3 = (string)-2.5; //stringに変更される
function showScore(string $name, int $score): void//戻り値がない場合は、void指定する
{
echo $name. ':' . $score. PHP_EOL;
}
function showScore(string $name, int $score): string//戻り値の方指定ができるが、もしNullが返される場合は'?string'とする
{
$value = $name. ':' . $score. PHP_EOL;
return $value;
}
showScore( 'sonsan', 90); // 正しく値が返される
showScore( 'sonsan', 'hogehoge'); // int が入力される場所に文字列を入力するとエラーとなる
showScore( 'sonsan', '90'); // int が入力される場所に文字列としての数字が入ると数値に変換されてしまう
//型の変換を防ぐために型を強い型付けにする必要がある。
declare(strict_types=1);
比較演算子
>= :~以上
<= :~以下
> :~より大きい
< :~より小さい
=== :~と等しい
!== :~と等しくない
単一の値の場合は、以下のもの以外はすべてtrueとして、当てはまるものはfalseとなる
false:false, ±0,±0.0, '0', '', null, []
<?php
$value = 0; //0の場合はfalseとなる
if($value){
....// true時の処理
}else{
....// false時の処理
}
SWITCHを利用して条件分岐を行う
幾つかの決められた値によって処理をしたい場合に便利
<?php
$signal = 'blue';
// if ($signal === 'red') {
// echo '停まれ!' . PHP_EOL;
// } elseif ($signal === 'yellow') {
// echo '注意!' . PHP_EOL;
// } elseif ($signal === 'blue'){
// echo '進め!' . PHP_EOL;
// }
switch ($signal) {
case 'red':
echo '停まれ!' . PHP_EOL;
break;
case 'yellow':
echo '注意!' . PHP_EOL;
break;
case 'blue':
case 'green':
echo '進め!' . PHP_EOL;
break;
default: //該当する処理がない場合の値を設定できる。
echo '色が違います' . PHP_EOL;
break;
}
for や while を使いこなそう
<?php
for($i = 1; $i > 10 ; $i++){ //$iが 1~10までの間繰り返される。
if($i % 3 ===0){ //$i が3の倍数の場合
continue; //スキップする
}
if($i === 4){ //$i が4場合
break; //ループを止める
}
echo "$i 番目 ですよ";
}
$value = 500; //在庫が40以下になるまでは繰り返される。
while($value > 40){
echo "在庫は、$value です";
$value -= 24;
}
//もし、在庫が40以下から始まった場合は、表示されない。
//こういう場合は、do whileを用いる
do{
echo "在庫は、$value です";
$value -= 24;
}while($value > 40); //do while の場合は、セミコロンを忘れないように。
関数を使いこなそう
<?php
//同じ処理を繰り返す場合は、関数を用いると可読性やカスタマイズを楽に行える。
//例えば同じ文言を表示させたい場合。
echo 'hogehoge'; //とすることもできる。
//関数として登録しておくと、重複して表示する際に関数のみを編集すると良いのでカスタマイズに適している。
//引数を定義することもできる。'$message' デフォルト値を挿入もできる。
function showMessage( $message = 'nice to meet you'){ // $message を仮引数と呼ぶ
echo '-------------------'.PHP_EOL;
echo 'hogehoge '. $message .'hogehoge'.PHP_EOL;
echo '-------------------'.PHP_EOL;
}
showMessage('Good Night'); //ここでの''内の値を実引数と呼ぶ
$tax = 1.1; //function の外で定義された変数を使うには'global'と宣言する必要がある
//もし、関数内でのみ利用したい場合は、function内で定義する方が良い。
function sum($a,$b,$c,$d,$e)
{
global $tax;
return ($a + $b + $c + $d + $e) * $tax;
echo '$a $b $c'.PHP_EOL; //return した後の処理は表示されない。
}
echo sum(100,200,300,400,500);
echo sum(300,400,500,600,700);
echo sum(100,200,300) + sum(300,400,500) . PHP_EOL;
//上記のような処理であれば、無名関数として編集に代入することも可能。
$sum = function ($a,$b,$c,$d,$e){ //'function'の後ろにスペースを必ず入れるように
$tax = 1.1;
return ($a + $b + $c + $d + $e) * $tax;
}; //無名関数の場合は、セミコロンで閉じる必要がある。
//もし、合算が0以下だった場合の処理を加えることもできる。
$sum = function ($a,$b,$c,$d,$e){ //'function'の後ろにスペースを必ず入れるように
$tax = 1.1;
$value = ($a + $b + $c + $d + $e) * $tax;
//以下のようなif分で条件式を書くこともできるが、条件演算子も利用できる
if($value < 0){
return 0;
}else{
return $value;
}
//条件演算子の書き方
return $value < 0 ? '0円です' : $value;
// 条件を書いたのちに '?' を書き、 trueの値を記述 ':' の後にfalseの値を記述
}
配列
<?php
//配列の作り方
$names = [
'sonsan',
'takuya',
'tetuhiro'
];
//配列の統合の仕方
$ohterNames = [
'yosikazu',
'tomohiro',
...$names, //'...'を入力しないと配列内に新しい配列として挿入される。
'hiroshi'
];
var_dump($names);
print_r($names);
//キー配列の作り方
$names = [
'overseer' => 'sonsan',
'servant' => 'takuya',
'volunteer' => 'tetuhiro'
];
foreach($names as $key => $name){ //キーを表示しない場合は、$nameのみを指定
echo $key. ' -- ' . $name.PHP_EOL;
}
可変長引数
<?php
//スコアの合計点を表示したい場合など以下のようにもできるが、スコアが増えると大変!!
function sum($score1,$score2,$score3){
return $score1 + $score2 + $score3;
}
//以下のようにするとスコアがどれだけ増えても大丈夫
function sum(...$scores){
$total = 0; //初期化
foreach($scores as $score){
$total += $score;
}
return $total;
}
echo sum(90,100,200,300).PHP_EOL;
echo sum(90,100,200,300,400,500,600).PHP_EOL;
//配列に値を渡してあげることもできる
function getScores(...$scores){
$total = 0; //初期化
foreach($scores as $score){
$total += $score;
}
return [$total, $total / count($scores)];
}
// [$sum, $average] = getScores(90,100,200,300,400,500,600);
list($sum, $average) = getScores(90,100,200,300);
echo $sum .PHP_EOL;
echo $average .PHP_EOL;
上記で使われているlist()関数の詳細はこちらから