0
0

PHPの基礎知識

Last updated at Posted at 2023-12-16

シングルクォーテーションとダブルクォーテーション

  • シングルクォーテーション
    文字列を表示するときにそのまま表示できる
    $a = 'hoge';
    echo '$a の中身は ' . $a . ' です。';
    /* 結果
    $a の中身は hoge です。
    */
    
  • ダブルクォーテーション
    文字列を表示するときに変数を展開して表示できる
    $a = 'hoge';
    echo "$a の中身は " . $a . ' です。';
    /* 結果
    hoge の中身は hoge です。
    */
    

処理速度はシングルクォーテーションの方が速い
意図しない変数展開を避けるためにダブルクォーテーションの使用は必要最低限にする

同値比較と等値比較

  • 同値比較(===, !==)
    対象をデータ型まで考慮して比較できる
    $a = 1;
    $b = '1';
    if ($a === $b) {
        echo true;
    } else {
        echo false;
    }
    // 結果 false
    
  • 等値比較(==, !=)
    対象をコンテキスト(文脈)で比較できる
    $a = 1;
    $b = '1';
    if ($a == $b) {
        echo true;
    } else {
        echo false;
    }
    // 結果 true
    

処理速度は同値比較の方が速い
意図しない分岐を発生させないために等値比較は使用しない

参照渡しと値渡し

PHPのリファレンスカウンティング にわかりやすい解説が載っています。

  • 参照渡し(&$argument)
    メソッドに変数を渡す時に、渡す変数のリファレンス(ポインタ、アドレス)を別の変数にコピーして渡す
    渡した変数の中身を更新できる
    function method(&$arg)
    {
        $arg = 'hare';
        echo '2:' . $arg . "\n";
    }
    $arg = 'hoge';
    echo '1:' . $arg . "\n";
    method($arg);
    echo '3:' . $arg . "\n";
    /* 結果
    1:hoge
    2:hare
    3:hare ← 変化している
    */
    
  • 値渡し($argument)
    メソッドに変数を渡す時に、渡す変数の値を別の変数にコピーして渡す
    渡した変数の中身を保護できる
    function method($arg)
    {
        $arg = 'hare';
        echo '2:' . $arg . "\n";
    }
    $arg = 'hoge';
    echo '1:' . $arg . "\n";
    method($arg);
    echo '3:' . $arg . "\n";
    /* 結果
    1:hoge
    2:hare
    3:hoge ← 変化していない
    */
    

PHPではオブジェクトは参照渡しになるためメソッドに渡すときのアンパサンドは不要
オブジェクトを複製する場合はcloneを使う。
オブジェクトを複製する場合はシャローコピーとディープコピーの知識が必要

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0