🐘
PHP学習備忘録①
前提知識
・動的サイト:ユーザーによって表示する内容が変化する
e.g. PHP
・静的サイト:ユーザーに関わらず一定の内容が表示される
e.g. HTML, CSS
変数
echo "It's \"Sunday\". Hello $name" . PHP_EOL;
//DQにDQを内在させる=\"を使用する
// . PHP_EOL = 改行コード
echo "It's \"Sunday\".\t Hello $name" . PHP_EOL;
// \tでタブ
ヒアドキュメントとナウドキュメント
$text = <<<"EOT"
echo "Hello World!";
EOT;
//指定した範囲内における改行を保持できる
//変数展開が必要な時はヒア(DQ)不要な時はナウ(SQ)と呼ぶ
データ型
$a = 1.3
$b = hello
var_dump($a); // float(-1.3)浮動小数点数
var_dump($b); // string(5)"hello" 文字列
//"print_r"は変数の情報を分かりやすく出力する
//配列に組み込んだデータ詳細を理解する為に使用する
$a = (string)1.3 //float→string データ型の変換も可能
スコープ
<?php
$rate = 1.1; //グローバルスコープ(全体で使用可能)
function sum($a, $b, $c)
{
// global $rate; //globalの付与で、関数内で有効化できる
$rate = 1.08; //ローカルスコープ(関数内でのみ使用可能)
return ($a + $b + $c) * $rate;
}
echo sum(100, 200, 300) + sum(300, 400, 500) . PHP_EOL;
無名関数
$sum = function ($a, $b, $c) { // 無名関数 (関数を値として利用する時)
return $a + $b + $c;
// 関数内でreturnを使用して数値を返した時点で、以降の処理は無効化される
};
echo $sum(100, 300, 500) . PHP_EOL;
条件演算子の短縮記載
<?php
function sum($a, $b, $c)
{
$total = $a + $b + $c;
// if ($total < 0) {
// return 0;
// } else {
// return $total;
// }
return $total < 0 ? 0 : $total;
//$total < 0 → 条件
//0: $total → 前者がtrue, 後者がfalse
}
echo sum(100, 300, 500) . PHP_EOL; // 900
echo sum(-1000, 300, 500) . PHP_EOL; // 0
引数の型指定
<?php
declare(strict_types=1);
//強い型付けを行うという命令
function showInfo(string $name, int $score): void
{
echo $name . ":" . $score . PHP_EOL;
}
// showInfo('taguchi', 40);
// showInfo('taguchi', 'dotinstall');
// voidは戻り値が不要であることを意味する
// 仮引数のデータ型を指定すると、該当するデータ型の実引数のみ有効になる
// ?string ?int とすると「文字列かnullか」「整数値かnullか」を意味する
連想配列とforEach
$scores = [
'first' => 90,
'second' => 40,
'third' => 100,
];
//=> で繋ぐ2つの要素。前者を”キー” 後者を"値"と呼ぶ
//上記のような配列を"連想配列"と呼ぶ
foreach ($scores as $key => $score) {
echo $key . "-" . $score . PHP_EOL;
}
// 1, $scoresという配列から要素を一つずつ取り出して、$scoreという変数に渡す
// 2, echoで変数$scoreを使用して結果を出力する
可変長引数
// function sum($a, $b, $c)
function sum(...$numbers)
//可変長引数を指定すると、実引数の数が変化しても戻り値として返すことが可能
{
// return $a + $b + $c;
$total = 0;
foreach ($numbers as $number) {
$total += $number;
}
return $total;
}
echo sum(1, 3, 5) . PHP_EOL;
echo sum(4, 2, 5, 1) . PHP_EOL;
//引数の数が変化しても、
複数の戻り値を指定
function getStats(...$numbers)
{
$total = 0;
foreach ($numbers as $number) {
$total += $number;
}
return [$total, $total / count($numbers)];
//jsのlength → phpではcount()を使用する。上記は全体/要素数 = 平均 を算出
}
// print_r(getStats(1, 3, 5));
// list($sum, $average) = getStats(1, 3, 5);
[$sum, $average] = getStats(1, 3, 5);
//上記2文は同義
echo $sum . PHP_EOL;
echo $average . PHP_EOL;
その他
//繰り返し処理の流れ
for ($i = 1; $i <= 100; $i++) {
echo $i;
}
$i = 1;
while ($i <= 100) {
echo $i;
$i++;
}
// 以下の1から4を繰り返す形で処理が実行される
//1, 初期化 :変数iを1として初期化する
//2, 条件定義 :1以上100以下の条件下で繰り返し処理を実施する
//3, 処理の実行:変数iを出力
//4, 変数の更新:「変数iに1を追加する」という処理の更新を実施
基本的事項
1.DQとSQ
ダブルクォーテーションでは変数展開が可能。(SQでは不可能)
2.文字列の連結
連結は . で行う
3.論理演算子
&& なおかつ
|| または
4.do while()
必ず一度は処理を実行し(条件未合致の場合でも)その後条件に沿った処理を実行
5.引数
仮引数にデフォルト値を設定
→実引数が未設定の場合はデフォルト値が自動的に適用される
6.ビルト関数
strlen:文字列の長さを取得
count:要素数を取得
rand:ランダムな整数値を取得
復習事項
・クラス
・インスタンス
・コンストラクタ
Discussion