■ PHP 文法1
はじめに
「PHPとは」でも触れましたように、PHPのコードはHTML文書内に記入します。PHPでは、ファイル内でPHPの始まりを意味する特殊な記号を見つけるまでは、単純にそのファイルの中身を出力します。そしてPHPの開始記号を見つけると、終了の記号を見つけるまでをPHPのコードとみなし、そのコードを実行するのです。実際、PHPのコードを表す開始タグと終了タグは4種類の組合せがあるのですが、最も多く普及しているのは「<?php
」と「?>
」の組合せでしょう(他の3個は、「<?・・・?>
」「<script language="PHP">・・・</script>
」「<%・・・%>
」)。また、PHPのコードを組み込むHTML文書の拡張子は、「.php」或いは「.php4」などとなります。通常の内容をそのまま出力するHTML文書と区別することによって、パフォーマンスの向上を計るためと思って下さい。
基本構文
まずは基本構文です。
戻り値 = 関数(引数);
非常にシンプルですね。この関数の組合せにより、様々な動作を実現させているのです。そして見ての通り、C や Perl と同様に、命令の終わりには「;」(セミコロン)をつけます。ただ、少し特殊なのは閉じるタグ(?>)がセミコロンの代わりに命令の終わりを表すということです。例えば、以下の二つの命令は同意となっています。
<?php echo "test"; ?>
<?php echo "test" ?>
また、コメントアウトはCやC++、シェルのコメントアウトをサポートしています。
// 単一行注釈 /* 注釈開始 */ 注釈終了 # 単一行注釈
定数と変数
まず定数ですが、格納された値が計算によって変わることのない「不変の値」のことです。つまり、格納された値は常に同じ値を保持しています。PHPでは定数を定義するために、define()
関数を使い、定数名とその値を引数とします。
define ("PIE", 3.14); $x = PIE; echo "<p>$x</p>\n";
更に、予約済みの特殊な定数として、以下のものがあります。
__LINE__:ファイル上の現在の行番号 __FILE__:ファイルのフルパスとファイル名 __FUNCTION__:関数名(PHP4.3.0で追加) __CLASS__:クラス名(PHP4.3.0で追加) __METHOD__:クラスのメソッド名(PHP5.0.0で追加)
また、変数は他のプログラム言語と同様に一時的な値を格納し、計算や命令によってその中身が変化する性質を持ちます。既に上記の例で紹介してしまいましたが、Perlと同じように単語の前に「$」をつけて変数であることを表します。以下の文字からなる文字列を変数として使用できます。
[a-z] [A-Z] [0-9](先頭には利用できない) [0x7F-0xFF] [_](アンダーバー、先頭には利用不可)
そして、変数の型は以下の様な種類があります。ただし、PHPでの変数型は非常に曖昧で、特にどこかで宣言するわけではありません。この辺りもとっつき易い原因の一つなのかもしれません。
- スカラー型
-
- 論理値(boolean)
-
- 真か偽かを表すデータ型
- TRUE、FALSEを直接代入する(大小文字の区別はない)
- 0、0.0、空文字、空オブジェクト、NULLなどが偽となる
- 整数(integer)
-
- -2,147,483,645〜2,147,483,645の値の整数値
- 10進数、16進数、8進数での指定が可能で正負符号を頭につけれる
- float (浮動小数点数 doubleも同様)
-
- 小数点以下の値をもった14桁の数値を扱える
- 「1.2」「1.2e3」「7E-10」などの指定が可能
- 文字列(string)
-
- 一般に言われる文字のことで、最大数は気にする必要がない
- 引用符、二重引用符はPerlのそれと同様
- ヒアドキュメントは「$str=<<<EOF_STR」のように記述する
- 複合型
-
- 配列(array)
-
- PHPの配列には添字配列と連想配列の違いはない
$array=array([key=>]value,・・・);
と記述する- キーを省略した場合、整数添字の最大値が使用され、次のキー値は+1となる
- つまり、
$array=array(1 => 'a', 'b', 'c');
は、$array=array(1 => 'a', 2 => 'b', 3 => 'c');
と同値 $array[key]=value;
とすることにより、配列の編集も可能(キーが無ければ新規で作成される)- キーの省略時は上記と同様に自動で生成される
- オブジェクト(object)
- 特別な型
- リソース(resource)
- ヌル(NULL)
PHPでは、厳密な変数の型変換というものは行われていません。以下に例を示しますが、最後の一行はおもしろい結果を返しています。文字列型の先頭が数値になっていると、値を数値として扱うようです。
$x = "0"; // $x は文字列 $x += 1; // $x は整数 (1) $x = $x + 1.2; // $x はfloat(2.2) $x = 3 + "10 pages"; // $x は整数(13)
また、文字列と配列の区別も曖昧なものとなっています。下の例を参考にして下さい。
$x = "abc"; // $x は文字列 $x{1} = "d"; // $x は"adc"
更に、変数は可変変数として、変数の値を新たな変数名として使用することもできます。
$x = "sevenkey"; $$x = "xyz";
演算子
- 代数演算子
-
- $a + $b:$aと$bの合計
- $a - $b:$aと$bの差
- $a * $b:$aと$bの積
- $a / $b:$aと$bの商
- $a % $b:$aを$bで割った余り
- べき乗は「
pow()
」関数を使用
- 代入演算子
-
- $a = 5:$aに5を代入する
- $a += 5:$aの値に5を足して$aに代入する(和差積商可能)
- $a .= $b:$aの値と$bの値を連結して$aに代入する
- $a ++:$aの値に1を加算して代入
- $a --:$aの値から1を引いて代入
- 比較演算子
-
- $a == $b:$aが$bに等しいときTrue
- $a === $b$aが$bに等しく同じ型のときTrue(PHP4のみ)
- $a != $b:$aが$bに等しくない場合にTrue
- $a <> $b:$aが$bに等しくない場合にTrue
- $a !== $b:$aが$bと等しくないか同じ型でない場合にTrue(PHP4のみ)
- $a < $b:$aが$bより少ないときにTrue
- $a > $b:$aが$bより多いときにTrue
- $a <= $b:$aが$b以下のときにTrue
- $a >= $b:$aが$b以上のときにTrue
- 条件演算子
- (expr1) ? (expr2) : (expr3)
- 式1がTrueの場合に式2を、Falseの場合に式3を値とする
- エラー制御演算子
- PHPの式の前に「@」を付けた場合、その式により生成されたエラーメッセージは無視される
- 論理演算子
-
- $a and $b:$aおよび$bが共にTrueの場合にTrue
- $a or $b:$aまたは$bのどちらかがTrueの場合にTrue
- $a xor $b:$aまたは$bのどちらか一つだけがTrueの場合にTrue
- !$a:$aがTreuでない場合にTrue
- $a && $b:$aおよび$bが共にTrueの場合にTrue
- $a || $b:$aまたは$bのどちらかがTrueの場合にTrue
- 配列演算子
- +演算子のみです。
- 右側の配列を左側に追加しますが、重複するキーは上書きされません。