特集
2004/01/23 23:50:00 更新
全3回「WebプログラミングPHP言語入門」
特集:第2回 ショッピングカートの作成で分かる「PHP」の力 (2/5)
変数
PHPでは、他の言語と同じように変数が使用できる。変数の型は、文字列、整数、論理型、浮動小数点数、配列など一般的な型をサポートしおり、代入演算子、代数演算子、ビット演算子、比較演算子、加算子/減算子など、一般的な演算子はほぼ使用可能と思ってよい。また、演算の際にはキャスト(型変換)が自動的に行われるので、変数の型を意識せずにすむ点も非常にありがたい。
なお、変数の型や演算子についてPHPマニュアルで詳しく説明されているので、興味がある方はそちらを参照してほしい。
サンプル2-1は演算子を使ったサンプルである。ここでは四則演算と文字列の結合だけしか使っていないが、ビット演算子なども同じような記述方法が可能である。この機会に、サンプルに手を加えて実行してみると良いであろう。
サンプル 2-1:演算子を使ったサンプル<?php $a = 1; $b = "A"; $a = $a + 1; // $a に1を加算した結果を $a に代入 $a++; // $a に1を加算 $a += 1; // $a に1を加算 $a *= 2; // $a を2で乗算 $a -= 2; // $a から1を減算 $a /= 2; // $a を2で除算 $b = $b . "B"; // $b に "B" を結合した結果を $b に代入 $b .= "C"; // $b に "C" を結合 $b .= $a; // $b に $a を結合 echo "\$a = {$a}\n"; echo "\$b = {$b}\n"; ?> |
上記サンプルを実行すると、次のような結果がブラウザに表示されるだろう。
サンプル 2-1を実行した結果$a = 3 $b = ABC3 |
サンプル2-1の15行目で文字列型と整数型を結合する際に、$aが整数型から文字列型にキャスト(型変換)されて文字列型として結合が行われていた事が、この出力結果で分るだろう。
連想配列と定義済みの変数
PHPは、ブラウザからのリクエスト情報、サーバ情報、セッション、クッキーなど、あらゆる情報を連想配列という形でアクセスする。PHPで利用できる定義済みの変数は次の通りである。
|
これらの情報にアクセスするには、連想配列と全く同じ操作をするだけで良い。例えば、ブラウザからリクエストされたURLを取得するには次のように連想配列にアクセスすれば良い(サンプル2-2)。
サンプル 2-2<?php echo $_SERVER["SCRIPT_URI"]; ?> |
連想配列の準備とスクリプト終了後の結果反映は、全てPHPのコアであるZend Engineが自動的に処理するので、ユーザーはスクリプトの作成に専念できる。Perlを経験した事があれば、PHPの設計思想が如何に優れているかを理解していただけた筈である。
関数
PHPには豊富な関数が用意されている。文字列の内容を加工する関数から MySQLやPostgreSQLをはじめとする各種データベースへの接続を実現する関数まで、様々な関数が用意されている。
PHPの関数は、必要なときにPHPマニュアルを使って目的の関数を探すだけで十分であろう。筆者が使用している環境(PHP 4.3.4)を例に挙げると、なんと983もの関数が実装されている。全ての関数を覚えるよりも、よく使う関数について理解を深めることをお勧めする。
自分の環境にどのような関数が定義されているかを知るには、下記のサンプルを実行してみると良い(サンプル 2-3)。おそらく筆者の環境とほぼ同数の関数名が列挙されたはずである。
サンプル 2-3:定義されている関数の確認<?php print_r(get_defined_functions()); ?> |
上記サンプル中で使っている"get_defined_functions"および"print_r"は、どちらも関数である。「get_defined_functions」は定義済みの全ての関数を配列として取得する働きがあり、「print_r」は引数をブラウザに出力する働きがある。詳しくは、PHPマニュアルのget_defined_functionsのページおよびprint_rのページを確認してほしい。
PHPマニュアルでは、関係する関数や動作の似ている関数のマニュアルへリンクが張られているので、リンクを辿っていけばいずれ目的の動作をする関数を見つけることができる。また、目的の動作をする関数が存在しなければ、自分で関数を定義することも可能である。
次章からは、画面遷移を伴うPHPスクリプトの作成方法を説明する。
[照井進吾,ITmedia]
Copyright © ITmedia, Inc. All Rights Reserved.