前提
PHPの復習的備忘録となります。
間違い等あればご指摘ください。
基礎
基礎
<?php
// コード記述
> // 閉じタグはHTMLと同時記載しない場合は不要
// 〜コメント
# 〜コメント(行末まで)
/* 範囲コメント */
// 変数
$変数名 = 変数;
// 出力
echo 'hello world' . PHP_EOL;
// . ピリオドで連結 PHP_EOLは改行
// " ' を使い分け('使用時は”で囲む)
$w = 'world';
echo "hello $w" . PHP_EOL; // hello world
echo "It's \"Friday\".\tHello $w " . PHP_EOL;
// 内部に変数使用時には " "で囲む
// " => \" タブ=> \t
ヒアドキュメント
$text = <<<EOT // 'EOT':変数不可 "EOT",EOT:変数可
// 長めのテキスト(改行や字下げも保持)
EOT; // 終端記号(改行必須、コメント不可)...文字自体は自由
計算
echo 10 + 3 . PHP_EOL; // 13
echo 10 - 3 . PHP_EOL; // 7
echo 10 * 3 . PHP_EOL; // 30
echo 10 / 3 . PHP_EOL; // 3.333...
echo 10 % 3 . PHP_EOL; // 1
echo 10 ** 3 . PHP_EOL; // 1000 乗算
echo (2 + 10) * 3 . PHP_EOL; // ()優先
echo 2 +'3' . PHP_EOL; // 5
//文字列でも数値っぽいものは数値化して計算する
// 自己代入
$price += 100;
$price -= 100;
// ±1
$price++;
$price--;
定数
// 大文字で定義、どちらか2パターン
define('NAME','tomo');
const NAME = 'tomo';
データ型 | 型 | 例 |
---|---|---|
文字列 | string | 'hello', "world" |
整数 | int | 2, 4, -10 |
浮動小数点 | float | 2.5, -4.2 |
null | null | |
真偽値 | bool | true,false |
配列 | array | [3,6,2] |
オブジェクト | object | new Object() |
型確認
var_dump($変数) // 型(数値or文字数)文字列
// キャスト(型変換)
// 値の前に()で型指定
$a = (float)20;
$b = (string)2.5;
var_dump($a); // float(20)
var_dump($b); // string(3) "2.5"
if文
if (条件①){
// 条件①がtrueの場合の処理
} else if (条件②) {
// 条件②がtrueの場合の処理
} else {
// どれも当てはまらない場合の処理
} // if 文は末尾 ; 不要
比較演算子、真偽値、論理演算子
>= // 以上
<= // 以下
> // より大きい
< // より小さい
=== // 等しい
!== // 異なる
$X = 3 ;
if ( $X ) { ...
// 単一文字,数字でも可
// false , ±0, ± 0.0, '0' , ' ' , null , [ ] , はfalse, 以外はtrue
// 条件式や値は真偽値として評価される
&& and // かつ
|| or // もしくは
! // 〜ではない
switch文
switch (①:変数など){
case ❶:
// ①が❶の場合の処理
break; // breakを入れない場合、条件が2つ重なる
case ❷:
// ①が❷の場合の処理
break;
case ❸:
case ❹: // 複数条件時はcaseを重ねる
// ①が❸または❹の場合の処理
break;
default:
// ①がどれにもあてはまらない場合の処理
break;
}
for文
// for (定義; 条件 ; 変更){}
for ($i = 1 ; $i <= 3 ; $i++){
// $iを1と定義して、$iが3以下の条件になるまで処理、処理後$i++
規定回数 ループ処理
}
while文
while (条件①){
条件が満たされるまで ループ処理
条件①の変化 // 状態変化を付けないと無限ループ
}
do{
1回処理を行った上で、条件が満たされるまで ループ処理
条件①の変化
} while(条件①); // ; が必要
スキップ・中断
for ($i = 1; $i <= 10; $i++) {
if ($i === 4){
if ($i % 3 === 0 ){
continue; // 処理をスキップ(当てはまる場合はその処理だけ飛ばす)
break; // 処理を中断(当てはまる場合、その時点で処理を止める)
}
echo $i . PHP_EOL;
}
関数・引数・return
function 関数名(仮引数 = 'デフォルト値')
{
// 繰り返し使用したい処理 (引数込)
return 返したい処理; // return時点で処理終了、値が戻る。
}
関数名(実引数); // 呼び出し
スコープ
$変数A = 1.1; //グローバルスコープ
function sum($a, $b, $c)
{
global $変数A; // global記述で外定義の変数使用できるが非推奨
$変数A = 1.08; // ローカルスコープ ...内部で定義し直す
return ($a + $b + $c)*$変数A; // 関数の外で定義された変数だと使用不可
}
echo sum(100, 200, 300) + sum(300, 400, 500) . PHP_EOL;
// 1944 ローカルスコープ が適用
無名関数
// function sum()のように名称定義しない関数
$sum = function ($a, $b, $c) {
return $a + $b + $c;
}; // 関数代入の場合 末尾 ; 必要
echo $sum(100,300,500) . PHP_EOL; // 900
条件演算子
function sum($a, $b, $c)
{
$total = $a + $b + $c;
// if ($total < 0){
// return 0;
// } else {
// return $total;
// }
// こちらに書き換え可
return $total < 0 ? 0 :$total;
}
echo sum(100,300,500) . PHP_EOL; // 900
echo sum(-1000,300,500) . PHP_EOL; // 0
型指定
declare(strict_types=1); // 厳密な型付け設定
// 引数の型付けは値の前に型名をいれる
// : のあとに返り値の型も指定できるがない場合は void
function showPoint(string $name, int $point): void
{
echo $name . ': ' . $point . PHP_EOL;
}
// showPoint('tomo',20);
// showPoint('tomo','tomotomo'); // 型指定しない場合でも処理してしまう
// 引数の型指定でエラーにできるが
showPoint('tomo','6'); // 文字列でも数値っぽい場合は処理できる
// 処理させたくない場合はdeclare〜で厳密な型付け設定に。
null渡し
declare(strict_types=1);
function getPoint(int $point): ?string // null or string という設定
{
return $point >= 100 ? 'Good' : null ;
}
echo getPoint(150) . PHP_EOL; // Good
echo getPoint(40) . PHP_EOL; // nullでエラーになるので、
// 「?型」 設定でnullも渡せるようにする 引数でも使用可
配列・キー
// 同種データをまとめたもの
$scores = [
30,
60,
100, // 最後も , を入れると管理しやすい
];
$scores[0] = 50; // 代入で変更可
$scores = [
'first' => 30, // 添字ではなくキーで管理可
'second' => 60,
'third' => 100,
];
$scores['second'] // 60
foreach
// $scores の要素を$scoreに繰り返し代入して処理
foreach ($scores as $score){
echo $score . PHP_EOL;
}
// key も出力可能
foreach ($scores as $key => $score){
echo $key . '--' . $score . PHP_EOL;
}
要素展開
// 配列内配列
$配列名 = [①,②,[③、④],];
$配列名[0] => ①
$配列名[2][0] => ③
// 配列に別配列の要素を展開する場合
$配列A = [a,b,c];
$配列B = [①,②,...$配列A, ③]; // [①,②,a,b,c,③]
可変長引数
//可変長引数 引数が幾つでも可
// function sum($a, $b, $c) ではなく
function sum(...$numbers)
{
// return $a + $b + $c;
$total = 0;
forEach ($numbers as $number){
$total += $number;
}
return $total;
}
複数返り値
function getNum(...$numbers)
{
$total = 0;
foreach ($numbers as $number) {
$total += $number;
}
return [$total, $total / count($numbers)]; // 返り値を配列代入
}
list($sum, $average) = getNum(1,2,3); // こちらか
[$sum, $average] = getNum(1,2,3); // こちらのパターンで代入
echo $sum . PHP_EOL; // 6
echo $average . PHP_EOL; // 2