PHP の簡単な使用法
西広島ドットコムへようこそ!
|トップ|新着情報|検索|サイトマップ|
 パソコン
 ネット

現在のところ、最も内容が充実しています。

 プログラム
 地域
 学習指導
 哲学
 創作
 批評
 トレード
 リンク集

PHP と HTML の共存

 PHP はファイルから PHP コードの開始を示す特別なタグを見つけるまでは単純にその内容を出力する。 PHP コードの開始を示すタグが見つかるとコード終了を示すタグがあるまで、コードを実行する。 このメカニズムにより PHP コードは HTML 構文と同居できる。 ただし、拡張子は html でなく php とすること。

 <html>
 <head>
 <title>Sample</title>
 </head>
 <body>
 <?
 $a = 1;
 print ("$a = " . $a . "<br>\n");
 ?>
 </body>
 </html>

 注意点としては、

  • 複数行を記述するには各行を ; で終らせる。
  • ホワイトスペース(空白、タブ、改行)は無視される。
  • 行の // あるいは # より後ろはコメント。
  • C 言語同様 /* と */ ではさまれた部分もコメント。

 PHPコードのブロックであることを示すタグには 4 種類ある。

 <? PHP プログラム(SGML ドキュメントを処理したい場合に適合) ?>
 <?= expression ?> は "<? echo expression ?>" のショートカット。
 
 <?PHP
 PHP プログラム(XHTML または XML ドキュメントを処理したい場合に適合)
 ?>
 
 <script language="php">
  echo ("FrontPage のようないくつかのエディタは処理命令を好まない");
 </script>
 
 <% echo ("オプションで ASP 形式のタグを使用可能"); %>

最初の 2 つは常に使用可能だが、他は php.ini 設定ファイルで on または off にできる。 言い替えれば常に使えるとは限らない。 短縮型のタグ (<? ... ?>) と ASP 形式の タグは便利だが、移植性に欠ける。

 さらに、ブロック終了タグは、直後に改行がある場合、改行を含む。 また、終了タグの直前にはセミコロンは不要(あってもよい)。

 PHP は次のような HTML と共存した構造を使うことができる。

 <?php
 if ($expression) {
    ?>
     <strong>This is true.</strong>
    <?php
 } else {
    ?>
     <strong>This is false.</strong>
    <?php
 }
 ?>

フリースタイル

 プログラムは、一つのまとまり(文)ごとに ; で区切る。 各行の先頭にある1つ以上の空白やタブは無視され、空行(改行だけの行)も無視される。

 if ($a) {
   printf("Hello.\n");
 }

は、以下と同じ。 しかし、読みやすさの点から上のような書き方がよいとされる。

 if($a){printf("Hello.\n");}

printf

 printfの後に続く""で囲まれた部分には 次のような特別の働きをする文字(エスケープシークエンス)を書くことができる。

制御文字意味機能
\n改行次の行にカーソルを移動する
\r復帰行の先頭にカーソルを移動する
\tタブ通常8カラムずつにカーソル開始位置をそろえる
\バックスラッシュスラッシュ(/)の反対向きの文字ないし円記号
\'シングルコーテーション'自体
\"ダブルコーテーション"自体
%%パーセント%自体

 次のように出力される PHP ファイル 01q.php を作成し、確かめてみよう。

 \t     タブ
 \     バックスラッシュ
 \"     "自体

 printf文の正確な書式は次のようになる([]は省略可能)。

 printf(フォーマット式[,リスト])

 フォーマット式は、"で囲んだ文字列だが、 この中には次のような書式指定記述子が使え、 数値や文字列を任意の書式に加工して出力することができるようになっている。

 %[符号][0][桁数][.小数点部]表現指示文字
  • 符号が-だとデータを左寄せで出力する(デフォルトは右寄せ)。
  • 0があると、数値が入らない桁を0で埋める(デフォルトはスペースで埋める)。
  • 桁数はデータを表示する桁数(デフォルトは必要な桁数)。
  • 小数点部は文字列の最大の長さ、または数値の小数点以下の桁数。
  • 表現指示文字(C言語の種類によってはサポートされていない文字もある)

    d,i 10進整数
    e 浮動小数点形式(指数)
    f 浮動小数点形式(小数)
    g eかfの短いほう
    c 文字
    s 文字列
    x 無符号16進数(Xは大文字)
    o 無符号8進数
    b 無符号2進数
    u 無符号10進整数
    l long型の整数(ld,lx,lo,luなど)

 次のような例 02.php を作成してみよう。

 <?php
  printf("65\t%d<br>\n", 65);
  printf("65.0\t%.3f<br>\n", 65.0);
  printf("65\t%x<br>\n", 65);
  printf("65\t%c<br>\n", 65);
  printf("文字列\t%s<br>\n", "abc");
 ?>

 次のような出力となるはずである。

 65 65
 65.0 65.000
 65 41
 65 A
 文字列 abc

変数の扱い

 PHP では変数はドル記号の後に変数名が続き、大文字小文字を区別する。 また、変数名は Perl 同様、文字またはアンダースコアから始まり、任意の数の文字、 数字、アンダースコアが続く。 さらに、Perl 同様、変数を扱う前に型宣言を行う必要はなく、 プログラムが型を決定してくれる。

型名説明
論理値(boolean)TRUE と FALSE しかない。一般に 0, 空文字列, NULL が FALSE。
整数(integer)10進数、16進数、8進数で指定可能。-または+を前に付けられる。最大約 20 億。
浮動小数点数(float)普通 10 進数で 14 桁の精度がある。
文字列(string)1 バイト単位で処理する。長さの上限はない。
配列(array)Perl でいう連想配列。添字には数字、文字を自由に使用可能。
オブジェクト(object)C++ にほぼ同じ。クラス型の変数のこと。
リソース(resource)PHP 4 で導入された外部リソースへのリファレンスを表す特殊変数。
ヌル(NULL)Perl でいう未定義値。PHP 4 で導入される。

 次のような例 03.php を作成してみよう。

 <?php
   /* 03.c */
 
   $b = TRUE;
   $i = 0xff;
   $s = '255';
   $a = array(1.23, 0xff, "abc");
 
   printf("b\t%s<br>\n", $b);
   printf("i\t%d<br>\n", $i);
   printf("s\t%s<br>\n", $s);
   printf("sum\t%d<br>\n", $i + $s);
   printf("a\t%d, %d, %s<br>\n", $a[0], $a[1], $a[2]);
 ?>

 論理値型、整数型、文字列型、配列型の各変数を使用し、 printf 以下で、それを文字列、整数に指定して画面に表示している。 0xff は十六進数表示の 255 である。 実行結果は次のようになる。 $i + $s は文脈にしたがって整数どうしと認識され sum 510 と出力されるわけだ。

 b 1
 i 255
 s 255
 sum 510
 a 1, 255, abc

 また、変数にはアクセスできる範囲というものがある。 一般に function 内部で使用された変数は、その function 外からアクセスできない(global を使わない限り)。 次のような例を考えてみよう。

 <?php
  function f($a) {
    $a = 10;
    print "$a\n";
  }
  function g() {
    global $a;
    $a = 10;
    print "$a\n";
  }
  $a = 1;
  print "$a\n";
  f($a);
  print "$a\n";
  g();
  print "$a\n";
 ?>

 実行すると次のように出力される。 すなわち、関数 f() を呼び出した後は呼び出し元の $a は変化しないが、 関数 g() を呼び出した後には global があるため、変化している。

 1 10 1 10 10

定数の扱い

 定数はスクリプト実行中に変更できない特殊な変数と考えてよい。 文字またはアンダースコアで始まり、任意の数の文字、数字、アンダースコアが後に続く。 習慣的に常に大文字で表記される。 それ以外に注意すべき点を挙げておく。

  • 定数はスクリプト中のどこからでもアクセスできる。
  • define()関数を使用することにより定義できる。
     一度定義された定数は変更できない。
  • 定数として使えるのは論理値、整数、小数、文字列のみである。
  • ある定数が設定されているかどうかを知るには、defined() 関数を使用する。
  • 定数は、前にドル記号($)を要しない。
|サイトポリシー|プロフィール|地図|お問合せ|
2007- (C) Nishihiroshima.com RSS