第3章 基本文法

変数の基本

PHPでは、変数名はドル記号($)で始まります。以下に、整数を代入する変数の例を示します。

$number = 10;
echo $number; // 出力: 10

上記の例では、変数$numberに整数の10を代入し、その変数をecho関数を用いて出力しています。


データ型

PHPには、様々なデータ型が存在します。

  1. 整数型(Integer)
  2. 浮動小数点型(Float)
  3. 文字列型(String)
  4. 配列型(Array)
  5. 連想配列(Associative Array)
  6. ブール型(Boolean)
  7. オブジェクト型(Object)
  8. NULL型
  9. リソース型(Resource)


整数型(Integer)

整数型は整数値を表現します。正の数、負の数、0を含めることができます。

$integer = 20;
echo $integer; // 出力: 20


浮動小数点型(Float)

浮動小数点型は小数を表現します。

$float = 20.5;
echo $float; // 出力: 20.5


文字列型(String)

文字列型は一連の文字を表現します。文字列はシングルクォート(' ')またはダブルクォート(" ")で囲みます。

$string = "Hello, PHP!";
echo $string; // 出力: Hello, PHP!


配列型(Array)

配列型は値の集合を表現します。各値は、インデックスまたはキーによってアクセスできます。

$array = array(1, 2, 3);
echo $array[0]; // 出力: 1


連想配列(Associative Array)

配列型の一種で、キーと値のペアを保持します。キーは文字列または整数を使用することができます。

$assoc_array = array("fruit1" => "Apple", "fruit2" => "Banana", "fruit3" => "Cherry");
echo $assoc_array["fruit1"]; // 出力: Apple


ブール型(Boolean)

ブール型は真または偽を表現します。これらの値はそれぞれ、truefalseで表現されます。

$boolean = true;
echo $boolean; // 出力: 1


オブジェクト型(Object)

オブジェクト指向プログラミングにおいて、特定のクラスのインスタンスを格納します。プロパティとメソッド(クラス内の変数と関数)を持つことができます。

class MyClass {
  public $prop = "I'm a class property!";
  public function myMethod() {
    return "Hello, from inside the class!";
  }
}

$obj = new MyClass;
echo $obj->prop; // 出力: I'm a class property!
echo $obj->myMethod(); // 出力: Hello, from inside the class!


NULL型

変数が値を持っていないことを示すために用いられます。例えば、変数を初期化せずに宣言した場合や、変数に明示的にNULLを代入した場合、その変数の値はNULLとなります。

$var = NULL;
var_dump($var); // 出力: NULL


リソース型(Resource)

データベースへの接続、ファイルへのハンドル、イメージキャンバスエリアなどの外部リソースへの参照を保持します。

$file = fopen("test.txt", "r");
var_dump($file); // 出力: resource(2) of type (stream)


変数展開

変数展開(または文字列内変数)とは、文字列内で直接変数を参照し、その値に置き換える機能を指します。この機能は、動的に生成される文字列を作成する際に非常に便利です。特に、ダブルクォート(" ")で囲まれた文字列内で変数を使用すると、その変数の値に自動的に置き換えられます。

以下に具体的な例を示します。

$name = "John";
echo "Hello, $name!";
// 出力: Hello, John!

上記の例では、$nameという変数がダブルクォートで囲まれた文字列内で使用されています。これにより、$nameの値が文字列内で直接展開(置き換え)され、結果として"Hello, John!"という文字列が生成されます。

注意点として、シングルクォート(' ')で囲まれた文字列内では変数展開は行われません。つまり、シングルクォートで囲まれた文字列内では、変数は単なる文字列として扱われ、値には置き換えられません。以下に例を示します。

$name = "John";
echo "Hello, $name!";
// 出力: Hello, John!

上記の例では、出力結果が"Hello, $name!"となり、$name"John"に置き換えられていません。これは、シングルクォートで囲まれた文字列内では変数展開が行われないためです。

このような特性により、PHPではダブルクォートとシングルクォートの間で微妙な違いが生じ、それぞれの使用場面を理解することが重要となります。

また、変数展開においては、変数名を波括弧({})で囲むことがあります。これは主に以下の二つのケースで利用されます。

1.文字列内での変数名とその周囲のテキストとの明確な区別を必要とする場合

$name = "John";
echo "Hello, {$name}son!";
// 出力: Hello, Johnson!

この例では、変数$nameとそれに続く"son"とを区別するために波括弧が使用されています。波括弧がないと、PHPは$namesonという変数を探しに行くため、意図しない結果になる可能性があります。

2.配列やオブジェクトのプロパティを文字列内で利用する場合:

$fruit = ['apple' => 'red', 'banana' => 'yellow'];
echo "An apple is {$fruit['apple']}.";
// 出力: An apple is red.

この例では、配列$fruit'apple'キーの値を表示するために波括弧が使用されています。波括弧がないと、正しく配列の値を参照できないため、エラーが発生します。

このように、波括弧を使用することで、文字列内で変数をより柔軟に、かつ明確に展開することが可能となります。


練習問題1.

下記のPHPコードを作成してください。

まず、$greetingという変数に"Hello, World!"という文字列を格納します。

次に、echoを用いて、その変数を出力します。


練習問題2.

下記のPHPコードを作成してください。

$nameと$ageという二つの変数を作成し、それぞれにあなたの名前と年齢を格納します。

文字列の中に変数を展開(変数名の前に$をつけて直接書き込む)して、"私の名前は[あなたの名前]で、年齢は[あなたの年齢]です。"という形式で自己紹介文をechoで出力します。