🐘

PHP学習備忘録①

2022/09/28に公開

前提知識

・動的サイト:ユーザーによって表示する内容が変化する
 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