■ 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
配列演算子
+演算子のみです。
右側の配列を左側に追加しますが、重複するキーは上書きされません。