プログラミング言語PHP
PHPの歴史
1994年 PHP(Personal Home Page Tools)
1995年 PHP/FI(Personal Home Page / Form Interpreter)
1997年 PHP/FI 2.0
1998年6月 PHP 3
2000年5月 PHP 4
2004年7月 PHP 5
PHPの正式名称(PHP3から)は「PHP:Hypertext Preprocessor」
現在の最新版はPHP 5.3.0 (PHP6は開発中)
対応しているプラットフォーム
・Linux
・Windows
・AS/400
・Mac OS X
・Novell NetWare
・OS/2
・RISC OS
・SGI IRIX 6.5.x
・Solaris (SPARC, INTEL)
・Solaris OpenCSW packages
PHPの特徴
- サーバ側で実行するHTML埋め込み型のスクリプト言語。
- 文法はC言語に似ている。
- MicrosoftのASPより便利な関数が多い。
- ほとんどのデータベースに対応。
- PerlのCPANのようなライブラリ(PEAR[ペア])がある。
- テンプレートエンジン(Smarty[スマーティー]など)を使用することで
ロジックとデザインの分離が可能
(最初の読み出し時だけPHPファイルに変換する処理が実行されるので遅い!)
- 多数のWebアプリケーションフレームワークがある。
(Maple, CakePHP, Ethna, symfony, Piece Framework, ZendFrameworkなど)
PHPを使用しているサイト(一部)
PHPは小・中規模だけでなく、大規模案件の稼働実績があります。
(例)
- Yahoo
- 楽天(※)
- ぐるなび
- GREE(グリー)
※楽天のサイトは複数のプログラム言語(Java, Ruby On Railsなど)
で構築されており、一部分でPHPが使用されています。
PHPで作られているWebアプリケーション(一部)
・phpMyAdmin・・・MySQL用
・phpPgAdmin・・・PostgreSQL用
・ibWebAdmin・・・Firebird用
・XOOPS ・・・コンテンツ管理
・XOOPS Cube・・・コンテンツ管理
・NetCommons・・・コンテンツ管理
・OpenPNE ・・・SNSサイト運営用
・PHPNuke ・・・コンテンツ管理
・WordPress ・・・blog/CMSツール
・phpBB ・・・掲示板
・EC-CUBE ・・・ECパッケージ
・PukiWiki ・・・PHPで作られたWiki
・osCommerce・・・ECサイト構築システム
PHPの環境構築(Windows)
・インストール XAMPP(ザンプ)
(1) XAMPP for Windowsのダウンロード
XAMPPのサイト(http://www.apachefriends.org/jp/xampp.html)より、
XAMPP for Windowsをダウンロードしてください。
(2) XAMPP for Windowsのインストール
・ダウンロードしたファイルをダブルクリックしてください。
・セキュリティの警告ダイアログが表示されますが、気にせずに「実行」をクリックしてください。
・言語の設定画面が表示されたら「Japanese」を選択して「OK」をクリックしてください。
・英語で注意事項の画面が表示された場合は内容を読んでから「OK」をクリックしてください。
・インストーラ画面が表示されますので、「次へ」をクリックしてください。
・インストール先設定画面が表示されますので、特別な理由がなければ
デフォルトのまま「次へ」をクリックしてください。
・オプション項目の設定画面が表示されますので、デフォルトのまま「次へ」をクリックしてください。
・インストールが完了すると「セットアップウィザードは完了しました」
という画面が表示されますので、「完了」をクリックしてください。
・コントロールパネルを起動するかどうかを確認するダイアログが表示
されますので、「はい」をクリックしてください。
・コントロールパネルが起動したら「Apache」と「MySQL」の右側にある
「開始」ボタンをクリックしてください。
(3) Apacheの動作を確認
・Webブラウザを起動し「http://localhost/」にアクセスしてください。
・画面中央に「XAMPP」と表示されている場合は成功です。
※「日本語」のリンクをクリックするとXAMPPのステータス表示やツールに
アクセスできる画面が表示します。
プログラムの開始と終了
4つの記述方法がありますが、一般的には1番上の書き方が多く使用されています。
<?php ?>
<? ?>
<% %>
<script language="php"> <script>
変数、定数
・変数
(1) 変数は宣言しなくても使用できます。
(2) 変数名の先頭の1文字目は必ず「$」を指定する必要があります。
(3) 変数に使える文字は数字、英字、アンダースコア(アンダーバー)「_」のみ。
(4) 変数の始まりには数字は使えません。
(5) 変数名の大文字と小文字は区別されます。
・定数
≪構文≫
define(【定数名】,【値】);
≪使用例≫
<?php
define(ZEIRITSU,0.05);
print ZEIRITSU;
?>
コメント
-
一行コメント
「//」または「#」より後の文字がコメントとして認識されます。
≪構文≫
// 【コメント】
# 【コメント】
- 複数行コメント
「/*」と「*/」で囲んだブロックがコメントとして認識されます。
≪構文≫
/*
【コメント1】
【コメント2】
*/
スーパーグローバル
すべてのスコープで使用できる組み込みの変数
・$GLOBALS 窶鐀 グローバルスコープで使用可能なすべての変数への参照
・$_SERVER 窶鐀 サーバ情報および実行時の環境情報
・$_GET 窶鐀 HTTP GET 変数
・$_POST 窶鐀 HTTP POST 変数
・$_FILES 窶鐀 HTTP ファイルアップロード変数
・$_REQUEST 窶鐀 HTTP リクエスト変数
・$_SESSION 窶鐀 セッション変数
・$_ENV 窶鐀 環境変数
・$_COOKIE 窶鐀 HTTP クッキー
≪参考情報≫
定義済の変数
http://www.php.net/manual/ja/reserved.variables.php
シングルクオートとダブルクオートの扱いの違い
・ ダブルクォートは文字列中の変数を展開する。
・ シングルクォートは文字列中の変数を展開しない。
変数の展開を使わないときはシングルクォートを使ったほうが処理速度が速くなります。
ダブルクォートは必要なとき以外は使わないほうがよいでしょう。
≪使用例≫
<?php
$fruit = "みかん";
echo "果物では $fruit が好きです。";
echo '果物では $fruit が好きです。';
?>
≪出力結果≫
果物では みかん が好きです。
果物では $fruit が好きです。
算術演算子(代数演算子):1/2
算術計算を行う場合に使用します。
記述 |
意味 |
$a + $b |
$a と $b を足す |
$a - $b |
$a から $b を引く |
$a * $b |
$a と $b を掛ける |
$a * $b |
$a と $b を掛ける |
$a / $b |
$a を $b で割る |
$a % $b |
$a を $b で割った余り |
算術演算子(代数演算子):2/2
≪使用例≫
<?php
print '5 + 2 = ' . (5 + 2) . '<br />';
print '5 - 2 = ' . (5 - 2) . '<br />';
print '5 * 2 = ' . (5 * 2) . '<br />';
print '5 / 2 = ' . (5 / 2) . '<br />';
print '5 % 2 = ' . (5 % 2) . '<br />';
?>
≪出力結果≫
5 + 2 = 7
5 - 2 = 3
5 * 2 = 10
5 / 2 = 2.5
5 % 2 = 1
代入演算子:1/2
変数に値を代入する時に使用します。
記述 |
意味 |
$a = $b |
$a に $b を代入する |
$a += $b |
$a に $a + $b を代入する |
$a -= $b |
$a に $a - $b を代入する |
$a *= $b |
$a に $a * $b を代入する |
$a /= $b |
$a に $a / $b を代入する |
$a %= $b |
$a に $a % $b を代入する |
$a .= $b |
$a に $b の値を連結して代入する |
代入演算子:2/2
≪使用例≫
<?php
print '$a = 5 : ' . ($a = 5) . '<br />';
print '$a += 2 : ' . ($a += 2) . '<br />';
print '$a -= 2 : ' . ($a -= 2) . '<br />';
print '$a *= 2 : ' . ($a *= 2) . '<br />';
print '$a /= 2 : ' . ($a /= 2) . '<br />';
print '$a %= 2 : ' . ($a %= 2) . '<br />';
print '$a .= 2 : ' . ($a .= 2) . '<br />';
?>
≪出力結果≫
$a = 5 : 5
$a += 2 : 7
$a -= 2 : 5
$a *= 2 : 10
$a /= 2 : 5
$a %= 2 : 1
$a .= 2 : 12
関係演算子:1/2
値の比較を行うための演算子です。TRUE(真)またはFALSE(偽)を返します。
記述 |
意味 |
$a == $b |
$a と $b が等しい時にTRUE |
$a === $b |
$a と $b が等しく同じ型である場合にTRUE |
$a != $b |
$a と $b が等しくない場合にTRUE |
$a <> $b |
$a と $b が等しくない場合にTRUE |
$a !== $b |
$a と $b が等しくないか、同じ型でない場合にTRUE |
$a < $b |
$a が $b より小さい時にTRUE |
$a > $b |
$a が $b より大きい時にTRUE |
$a <= $b |
$a が $b より小さいか等しい時にTRUE |
$a >= $b |
$a が $b より大きいか等しい時にTRUE |
関係演算子:2/2
≪使用例≫
<?php
print '5 == 5 : ' . (5 == 5) . '<br />';
print '5 === 5 : ' . (5 === 5) . '<br />';
print '5 != 5 : ' . (5 != 5) . '<br />';
print '5 <> 5 : ' . (5 <> 5) . '<br />';
print '5 !== 5 : ' . (5 !== 5) . '<br />';
print '5 < 5 : ' . (5 < 5) . '<br />';
print '5 > 5 : ' . (5 > 5) . '<br />';
print '5 <= 5 : ' . (5 <= 5) . '<br />';
print '5 >= 5 : ' . (5 >= 5) . '<br />';
?>
≪出力結果≫
5 == 5 : 1
5 === 5 : 1
5 != 5 :
5 <> 5 :
5 !== 5 :
5 < 5 :
5 > 5 :
5 <= 5 : 1
5 >= 5 : 1
インクリメント/デクリメント演算子:1/2
変数の値を1つずつ増減させる時に使用する演算子です。
記述 |
意味 |
$a++ |
$a の値を返してから $a の値に 1 を加える。 |
++$a |
$a の値に 1 を加えてから $a の値を返す。 |
$a-- |
$a の値を返してから $a の値から 1 を引く。 |
--$a |
$a の値から 1 を引いてから $a の値を返す。 |
インクリメント/デクリメント演算子:2/2
≪使用例≫
<?php
$a = 5;
// 変数の値を表示してから1増やす
print 'a : ' . $a++ . '<br />';
// 変数を1増やしてから値を表示する
print 'a : ' . ++$a . '<br />';
// 変数の値を表示してから1減らす
print 'a : ' . $a-- . '<br />';
// 変数を1減らしてから値を表示する
print 'a : ' . --$a . '<br />';
?>
≪出力結果≫
a : 5
a : 7
a : 7
a : 5
ビット演算子:1/2
記述 |
意味 |
$a & $b |
$aと$bの論理積(AND) |
$a | $b |
$aと$bの論理和(OR) |
$a ^ $b |
排他的論理和(XOR: exclusive OR) |
~$a |
$aの否定(NOT) |
$a << 4 |
$aを0埋めしながら4ビット左にシフトさせる |
$a >> 4 |
$aを符号を保持したまま4ビット右にシフトさせる |
ビット演算子:2/2
≪使用例≫
<?php
$a = 1;
$b = 0;
print '$a & $b : ' . ($a & $b) . '<br />';
print '$a | $b : ' . ($a | $b) . '<br />';
print '$a ^ $b : ' . ($a ^ $b) . '<br />';
print '~$a : ' . (~$a) . '<br />';
print '$a << $b : ' . ($a << $b) . '<br />';
print '$a >> $b : ' . ($a >> $b) . '<br />';
?>
≪出力結果≫
$a & $b : 0
$a | $b : 1
$a ^ $b : 1
~$a : -2
$a << $b : 1
$a >> $b : 1
論理演算子:1/2
記述 |
意味 |
$a && $b |
$aと$bの論理積 |
$a and $b |
$aと$bの論理積 |
$a || $b |
$aと$bの論理和 |
$a or $b |
$aと$bの論理和 |
$a xor $b |
排他的論理和(XOR: exclusive OR) |
! $a |
$aの否定(NOT) |
論理演算子:2/2
≪使用例≫
<?php
$a = 1;
$b = 0;
// 論理積
print '$a && $b : ' . ($a && $b) . '<br />';
// 論理和
print '$a || $b : ' . ($a || $b) . '<br />';
// 排他的論理和
print '$a xor $b : ' . ($a xor $b) . '<br />';
// 否定
print '!$a : ' . (!$a) . '<br />';
?>
≪出力結果≫
$a && $b :
$a || $b : 1
$a xor $b : 1
!$a :
if:1/2
if-else文は、条件に応じて処理を分岐させてプログラムの流れをコントロールすることができます。
≪文法の説明≫
変数$aの値が「1」の場合は、処理1を実行し、変数$aの値が「2」の場合には処理2を実行します。
変数$aの値が「1」と「2」のどちらでもない場合は、処理3を実行します。
if ($a == 1) {
処理1;
} elseif ($a == 2) {
処理2;
} else {
処理3;
}
if:2/2
≪使用例≫
<?php
$a = 1;
if ($a == 1) {
print '変数$aの値は 1 です。';
} elseif ($a == 2) {
print '変数$aの値は 2 です。';
} else {
print '変数$aの1または2以外です。';
print '変数$aの値は、' . $a . 'です。';
}
?>
≪出力結果≫
変数$aの値は 1 です。
switch:1/2
式の値に応じて多数の分岐を実現できます。
≪文法の説明≫
評価しても一致するものが無い場合は、defaultキーワード後の処理を実行します。
break文は、switch文を抜ける役割をしますので、break文が無い場合はcaseキーワード内の
処理実行後もswitch文を抜けません。
switch(式) {
case 定数式1:
処理1;
break;
case 定数式2:
処理2;
break;
default:
処理n;
}
switch:2/2
≪使用例≫
<?php
$a = 1;
switch($a) {
case 1:
print '変数aの値は 1 です。';
break;
case 2:
print '変数aの値は 2 です。';
break;
default:
print '変数aの1または2以外です。';
print '変数aの値は、' + a + 'です。';
}
?>
≪出力結果≫
変数aの値は 1 です。
for:1/2
指定した回数だけ処理を繰り返す場合に用います。
≪文法の説明≫
for (初期状態; 終了条件; 継続処理) {
処理;
}
for:2/2
≪使用例≫
<?php
for($i = 1; $i <= 10; $i++) {
for($j = 1; $j <= $i; $j++) {
print '△';
}
print '<br />';
}
?>
≪出力結果≫
△
△△
△△△
△△△△
△△△△△
△△△△△△
△△△△△△△
△△△△△△△△
△△△△△△△△△
△△△△△△△△△△
while:1/2
ある条件が真である間、ループを繰り返します。
≪文法の説明≫
while (条件式) {
処理;
}
while:2/2
≪使用例≫
<?php
$i = 1;
$j = 1;
while ($i <= 10) {
$j = 1;
while ($j <= $i) {
print '△';
$j++;
}
print '<br />';
$i++;
}
?>
≪出力結果≫
△
△△
△△△
△△△△
△△△△△
△△△△△△
△△△△△△△
△△△△△△△△
△△△△△△△△△
△△△△△△△△△△
do-while:1/2
do-while文は条件式の評価がループの最後に行われる為、最初の1回が必ず実行されます。
≪文法の説明≫
do {
処理;
} while (条件式);
do-while:2/2
≪使用例≫
<?php
$i = 1;
$j = 1;
do {
$j = 1;
do {
print '△';
$j++;
} while ($j <= $i);
print '<br />';
$i++;
} while ($i <= 10);
?>
≪出力結果≫
△
△△
△△△
△△△△
△△△△△
△△△△△△
△△△△△△△
△△△△△△△△
△△△△△△△△△
△△△△△△△△△△
break
break文が実行されると、ループが終了していなくてもループから抜けます。
≪使用例≫
<?php
$i = 0;
$j = 0;
for($j = 1; $j <= 10; $j++) {
for($i = 1; $j <= 10; $i++) {
print $i . ' ';
if($i == $j) {
print '<br />';
break;
}
}
}
?>
≪出力結果≫
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
continue
continue文が実行されると、いったんループの先頭に戻ります。
≪使用例≫
<?php
$i = 0;
for($i = 1; $i <= 10; $i++) {
if($i % 2 == 0) {
continue;
} else {
print $i . ' ';
}
}
?>
≪出力結果≫
1 3 5 7 9
配列:1/4
配列は、複数の値をまとめて扱える変数です。
≪文法の説明≫(一部)
・初期値を指定して配列を作成
$配列名 = array(値1,値2,値3・・・);
・配列の要素の値の利用
$配列[番号] = 値;
$変数 = $配列[番号];
・配列の要素数を取得
$変数 = count($配列);
・連想配列から値だけを全て取り出す
$配列 = array_values($配列);
・foreach - 配列を扱う場合
foreach ( $配列 as $変数 ) {
【繰り返す処理】
}
・foreach - 連想配列を扱う場合
foreach ( $配列 as $キー変数 => $値変数 ) {
【繰り返す処理】
}
配列:2/4
≪使用例≫
<?php
$arr = array(1,2,3,4,5,6,7,8,9,10); // 初期値を指定して配列を作成
$total = 0;
$cnt = count($arr); // 配列の要素数を取得
foreach($arr as $arrs) {
$total += $arrs;
}
// 平均値を表示
print '平均 : ' . (int)($total / $cnt);
?>
≪出力結果≫
平均 : 5
配列:3/4
≪使用例≫
<?php
// foreachによる連想配列の処理
$arr = array('apple' => 'りんご', 'orange' => 'みかん', 'peach' => 'もも');
foreach($arr as $key => $val) {
print $key . ' : ' . $val . '<br />';
}
?>
≪出力結果≫
apple : りんご
orange : みかん
peach : もも
配列:4/4
≪使用例≫
<?php
// array_values関数の使用例
$data = array('apple' => 'りんご', 'orange' => 'みかん', 'peach' => 'もも');
$arr = array_values($data);
foreach($arr as $arrs) {
print $arrs . '<br />';
}
?>
≪出力結果≫
りんご
みかん
もも