PHPで扱うデータにはいくつか種類があって、型(データ型)などと言います。 ▼ 4種類のスカラー型 型名説明 boolean論理値trueとfalse integer整数 float(double)浮動小数点数 string文字列 [スカラー型の例] $boolean = true; $integer = 10; $float = 1.23; $string = "文字列データ"; ※このスカラー型だけが唯一、変数値以外に定数値にもなることができます。 ▼ 2種類の複合型 型名説明 array配列 objectオブジェクト指向においてnew演算子でインスタンス化したもの [複合型の例] $array = array(1, 'に', '参'); // array()で配列を作成。$array[0]のようにして値参照 $object = new Foo(); ▼ 2種類の特別な型 型名説明 resourceリソース(ファイルポインタなど) nullヌル [特別な型の例] $fp = fopen("filename", "r"); $null = null;
PHPで扱うデータにはいくつか種類があって、型(データ型)などと言います。
データを保持するために「変数」というデータの入れ物を使うことができます。 変数にデータを入れるには、変数から代入するか、定数から代入する方法があります。 最初に代入した「5」は定数になります。(整数値なので整数定数) PHPコードに直接埋め込んだデータは定数なのでその名のとおり書き換えできないデータです。 一方、変数は書き換えることができるので再び別の値を代入することができます。代入した「Hello world」は文字列の定数なので文字列定数(リテラル)と呼ばれます。
データを保持するために「変数」というデータの入れ物を使うことができます。
変数にデータを入れるには、変数から代入するか、定数から代入する方法があります。
最初に代入した「5」は定数になります。(整数値なので整数定数) PHPコードに直接埋め込んだデータは定数なのでその名のとおり書き換えできないデータです。 一方、変数は書き換えることができるので再び別の値を代入することができます。代入した「Hello world」は文字列の定数なので文字列定数(リテラル)と呼ばれます。
定数とは、実行時にはもう値が固定で決まっていて、改変することのできないデータ ▼ ユーザ定義定数 定数を定義(定数文字にデータを割り当て)できるのはdefine()関数のみ 指定できる値は、スカラー(boolean,integer,double,string)のみ スコープ規則を越えられる。つまりdefine()記述以降なら例え関数中だろうが、include呼び出しコードの中だろうが定数文字があれば、割り当てられたデータ値に置換される。 define("CONSTANT", "foo"); // CONSTANTという定数文字に、文字列"foo"を割り当て if (defined("CONSTANT")) { echo 'CONSTANTは「',CONSTANT,'」に定義されています。'; } 第三引数をtrueにすると、定数名は大文字小文字の区別がなくなる。 define("NAME", "置換データ", true); // 以下はすべて置き換えられる echo NAME; echo Name; echo name; ▼ クラス定数 クラス内でconstを使って定義できるもの そのままではクラス内のみ通用する定数なので、外部から参照するにはFooClass::FOOのようにする。 ▼ マジック定数 自動的に定義される定数 名前説明 __LINE__ファイル行に置換 __FILE__ファイルのパス __DIR__dirname(__FILE__)と同じ __FUNCTION__ __CLASS__ __METHOD__ __NAMESPACE__ ▼ 整数定数 スカラー型の整数値で、コードに直書きされたもの $foo = 3; // 変数に整数定数3を代入 $bar = 003; // 8進数表記の3 $fuga = 0x03; // 16進数表記の3 if ($foo == 3) { // if文の条件式として比較に使っている3 echo '値は3です'; } ▼ 浮動小数点定数 スカラー型の浮動小数点数で、コードに直書きされたもの $foo = 3.2; // 変数に浮動小数点定数3.2を代入 $bar = 1.2e3; // 1.2 x 10の3乗 これも定数(指数表記) $fuga= 7E-10; // 7 x 10の−10乗(eでもEでも同じ) // 精度の問題があるので少数が等しいという比較をしてはいけない if ($foo == 3.2) { echo '値は3.2です'; } ▼ 文字列定数(リテラル) ・文字列をつくる(その1) $i = 5; $s = '変数$iの値は' . "$iです。\n"; // 「変数$iの値は5です。[改行]」が変数$sにセットされた 上記のように、シングルクォートで囲んだ文字列は書いたままな(変数$iが展開されていない)のに対し、後ろに連結したダブルクォートで囲んだ文字列は展開され「\n」という特殊文字(エスケープシーケンス)まで置き換わっている。 つまりシングルクォートで囲むとそのままで、ダブルクォートで囲むと展開(変数やエスケープシーケンス部分が)されることがわかる。 また、「Can't open file」のようなシングルクォートを含む文字列をシングルクォートで囲むと文字列終端が判別できなくなりエラーになるので「\」文字で「'Can\'t open file'」のようにエスケープする必要がある。(ダブルクォートも同様) ・変数展開の注意点 $i = 5; $s = "aaaaaaaaa$iiiiiiii"; // これだと変数$iiiiiiiiを展開させようとして未定義エラーに $s = "aaaaaaaaa{$i}iiiiiii"; // これで解決! 必ず{$変数}と書くクセを 変数展開を使わないで $s = 'aaaaaaaaa' . $i . 'iiiiiii';と書いたり(文字列連結) $s = sprintf('aaaaaaaaa%diiiiiii', $i);と書く方法(sprintf関数のフォーマットを使う)もある。 これ以外の文字列作成方法としてはヒアドキュメントがある。 PHPコードの中に書くことができて、独立したファイル文書みたいに自由に改行も使えるのでレイアウトのイメージがつかみやすくて便利 ・ヒアドキュメント // 文字列の代入 $html = << タイトル <body> コンテンツ
定数とは、実行時にはもう値が固定で決まっていて、改変することのできないデータ
▼ ユーザ定義定数
第三引数をtrueにすると、定数名は大文字小文字の区別がなくなる。
▼ クラス定数
クラス内でconstを使って定義できるもの
そのままではクラス内のみ通用する定数なので、外部から参照するにはFooClass::FOOのようにする。
▼ マジック定数
自動的に定義される定数
▼ 整数定数
スカラー型の整数値で、コードに直書きされたもの
▼ 浮動小数点定数
スカラー型の浮動小数点数で、コードに直書きされたもの
▼ 文字列定数(リテラル)
上記のように、シングルクォートで囲んだ文字列は書いたままな(変数$iが展開されていない)のに対し、後ろに連結したダブルクォートで囲んだ文字列は展開され「\n」という特殊文字(エスケープシーケンス)まで置き換わっている。
つまりシングルクォートで囲むとそのままで、ダブルクォートで囲むと展開(変数やエスケープシーケンス部分が)されることがわかる。
また、「Can't open file」のようなシングルクォートを含む文字列をシングルクォートで囲むと文字列終端が判別できなくなりエラーになるので「\」文字で「'Can\'t open file'」のようにエスケープする必要がある。(ダブルクォートも同様)
変数展開を使わないで $s = 'aaaaaaaaa' . $i . 'iiiiiii';と書いたり(文字列連結) $s = sprintf('aaaaaaaaa%diiiiiii', $i);と書く方法(sprintf関数のフォーマットを使う)もある。
これ以外の文字列作成方法としてはヒアドキュメントがある。 PHPコードの中に書くことができて、独立したファイル文書みたいに自由に改行も使えるのでレイアウトのイメージがつかみやすくて便利