代入と値
目次
- 解説
- 1. 代入とは
- 2. 代入する値
解説
1. 代入とは
変数に値を入れることを代入すると言います。代入には代入演算子「=(イコール)」を使用し、数学と同じように左辺に変数を置き、右辺に代入する値を置きます。
代入演算子 | 用例 | 処理内容 |
---|---|---|
= | A = B | AにBを代入する |
代入は何度も行うことが可能で、代入の度に変数の中身は上書きされます。そのため、プログラムの途中で「今は何が入っているのか」を頭の中でシミュレーションできるようになりましょう。
static function practiceSubstitution01() {
$message = 'あなたの';
Logger::echo($message);
$message = '私の';
Logger::echo($message);
$message = $message . '名前は';
Logger::echo($message);
$message = $message . 'でぃぐすきるです。';
Logger::echo($message);
}
[2020/12/31 12:34:56] あなたの // 最初に代入した内容
[2020/12/31 12:34:56] 私の // 上書き代入した内容
[2020/12/31 12:34:56] 私の名前は // 結合して再代入した内容
[2020/12/31 12:34:56] 私の名前はでぃぐすきるです。
2. 代入する値
代入する際には値そのものだけでなく、以下のような方法で値の代入が可能です。2つ目以降の詳細は今後学習しますので、それまでは「右辺では代入する値を作っているのだな」と覚えておきましょう。
値そのものを代入
スカラー型およびnull型の形式で表現された「値そのもの」のことをリテラルと呼びます。下記は右辺にそれぞれの型に応じた形式の値=リテラルを置き、直接代入している例です。
static function practiceSubstitution02() {
$customerName = 'でぃぐすきる';
Logger::echo($customerName);
$intValue = 10;
Logger::echo($intValue);
$floatValue = 9.9;
Logger::echo($floatValue);
}
式の結果を代入
数値の計算や文字列の結合などを数学と同じように式と呼びます。下記は式を右辺に置き、式の結果を代入している例です。
static function practiceSubstitution02() {
~ 前半省略 ~
$displayMessage = 'こんにちは、' . $customerName . 'さん!';
Logger::echo($displayMessage); // 文字列結合式の結果
$calculateResult = $floatValue + 0.1;
Logger::echo($calculateResult); // 計算式の結果
$isSameValue = ($intValue == $calculateResult);
Logger::echo($isSameValue); // 比較式の結果 trueなら1 falseならnull(表示されない)
}
他のメソッドの実行結果を代入
メソッドは呼び出し元に実行した結果などを戻すことができ、これを戻り値と言います。下記はメソッドの呼び出しを右辺に置き、メソッドの戻り値を代入している例です。
static function practiceSubstitution03() {
$addResult = self::addMethod(100, 200); // 呼び出す際に整数を2つ渡す
Logger::echo($addResult); // 受け取った戻り値を出力
}
static function addMethod(int $a, int $b) {
return $a + $b; // 受け取った2つの整数を加算して「return」で戻す
}
クラスの実体を代入
内部にデータを保持してそれを操作するようなクラスの場合、クラスを設計図として、その実体(インスタンス)を作ってから操作を行います。下記はそのインスタンスの作成処理を右辺に置き、作成されたインスタンスを代入している例です。
static function practiceSubstitution04() {
// 同じクラスを設計図としてnewで別々の実態を作り代入している
$obj1 = new stdClass;
$obj2 = new stdClass;
// 実体が異なるため、同じ仕組みでも別々の文字列を保持できている
$obj1->name = 'でぃぐすきる';
$obj2->name = 'DigSkill';
// どちらの実体のnameを呼び出すかで結果が変わる
Logger::echo($obj1->name);
Logger::echo($obj2->name);
}
問題
確認問題
確認問題
この中で変数aに代入された値が最終的に「"あいうえお"」とならないものはどれか?