プログラミング言語PHP







プログラミング言語PHP










Naoyuki Sano
作成日:xxxx年xx月xx日


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の特徴

  1. サーバ側で実行するHTML埋め込み型のスクリプト言語。
  2. 文法はC言語に似ている。
  3. MicrosoftのASPより便利な関数が多い。
  4. ほとんどのデータベースに対応。
  5. PerlのCPANのようなライブラリ(PEAR[ペア])がある。
  6. テンプレートエンジン(Smarty[スマーティー]など)を使用することで
    ロジックとデザインの分離が可能
    (最初の読み出し時だけPHPファイルに変換する処理が実行されるので遅い!)
  7. 多数のWebアプリケーションフレームワークがある。
    (Maple, CakePHP, Ethna, symfony, Piece Framework, ZendFrameworkなど)

PHPを使用しているサイト(一部)

PHPは小・中規模だけでなく、大規模案件の稼働実績があります。
(例)
※楽天のサイトは複数のプログラム言語(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 />';
    }
?>
≪出力結果≫
りんご
みかん
もも